pandas——DataFrame

news2024/11/24 7:29:43

一、dataframe

(一)创建dataframe

file.csv 

Name,Age,City
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
import pandas as pd

'''
1.使用字典创建DataFrame:
其中字典的键是列名,值是数据列表。
'''
print('================1.使用字典创建DataFrame====================')
data = {
    'Column1': [1, 2, 3],
    'Column2': ['A', 'B', 'C']
}
df = pd.DataFrame(data)
print(df)
'''
2.使用列表的列表创建DataFrame:
如果有多个列表,每个列表代表一列的数据,你可以将它们作为列表的列表传递给DataFrame。
'''
data1 = [
    [1, 'A'],
    [2, 'B'],
    [3, 'C']
]
print('================使用列表的列表创建DataFrame====================')
df1 = pd.DataFrame(data1, columns=['Column1', 'Column2'])
print(df1)
'''
3.指定索引:
在创建DataFrame时,你可以指定行索引。
'''
print('================3.指定索引====================')
data2 = {
    'Column1': [1, 2, 3],
    'Column2': ['A', 'B', 'C']
}
index = ['row1', 'row2', 'row3']
df2 = pd.DataFrame(data, index=index)
print(df2)
'''
4.使用read函数:
pandas提供了多种read_*函数来从不同的数据源读取数据并创建DataFrame,例如read_csv、read_excel、read_sql等。
'''
print('================4.使用read函数====================')
df = pd.read_csv('file.csv')
print(df)
'''
5.DataFrame的列操作:
创建DataFrame后,你可以添加、删除或修改列。
'''
print('================5.DataFrame的列操作====================')
df['gender'] = ['女', '男', '女']  # 添加新列
print(df)
print()
df.drop('gender', axis=1, inplace=True)  # 删除列
print(df)
'''
6.DataFrame的行操作:
你可以添加、删除或修改行。
'''
print('================6.DataFrame的行操作====================')
df1.loc[3] = [4, 'D']  # 添加新行
print(df1)
df1.drop(0,inplace=True)  # 删除第一行
print(df1)
'''
7.查看DataFrame信息:
使用df.head()、df.tail()、df.info()等函数来查看DataFrame的内容和结构。
'''
print('================7.查看DataFrame信息====================')
print(df.head(2))
print(df.tail(1))
print(df.info)
'''
8.DataFrame的保存:
你可以将DataFrame保存到不同的文件格式中,如CSV、Excel等。
'''
print('================8.DataFrame的保存====================')
df1.to_csv('file1.csv', index=False)

 

生成的file1.csv 

Column1,Column2
2,B
3,C
4,D

(二)dataframe—索引

import pandas as pd

'''
1.默认索引:
当你创建一个DataFrame而没有指定索引时,pandas会自动创建一个从0开始的整数索引。
'''
print('1.默认索引:')
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
print(df.index)  # 输出:RangeIndex(start=0, stop=3, step=1)
'''
2.命名索引:
你可以给索引命名,使其更有意义。
'''
print('2.命名索引:')
df.index.name = 'RowID'
print(df)
'''
3.设置索引:
在创建DataFrame时,可以通过index参数来设置索引。
'''
print('3.设置索引:')
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])
print(df1)
'''
4.重置索引:
如果索引变得不连续或你想要将其重置为默认的整数索引,可以使用reset_index()方法。
'''
print('4.重置索引:')
df.reset_index(drop=True, inplace=True)
# print(df)
'''
5.多重索引(MultiIndex):
DataFrame可以有多个索引级别,这称为多重索引。
'''
print('5.多重索引(MultiIndex):')
arrays = [['bar', 'bar', 'baz', 'baz'],
          ['one', 'two', 'one', 'two']]
df2 = pd.DataFrame({'A': [1, 2, 3, 4]}, index=arrays)
print(df2)
'''
6.索引选择数据:
使用.loc[]和.iloc[]可以基于索引来选择数据。
'''
print('6.索引选择数据:')
# 使用标签选择数据
print(df1.loc['a'] ) # 选择索引为'a'的行
# 使用整数位置选择数据
print(df1.iloc[0])  # 选择第一行
'''
7.切片:
可以对索引进行切片操作,选择一部分数据。
'''
print('7.切片:')
print(df1.loc['a':'c'] ) # 选择索引从'a'到'c'的行

'''
8.索引的修改、删除:
'''
print('8.索引的修改、删除:')
df1.index = ['x', 'y', 'z']
print(df1)
# df1.drop('a')  # 删除索引为'a'的行
# print(df1)
'''
9.索引的排序:
可以使用sort_index()方法对索引进行排序。
'''
print('9.索引的排序:')
df1.sort_index()
print(df1)

 

(三)dataframe—切片

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['John', 'Anna', 'Pingping', 'Linda', 'Chris'],
    'Age': [28, 24, 35, 32, 29],
    'City': ['New York', 'Paris', 'China', 'London', 'Madrid']
}
df = pd.DataFrame(data)
'''
1.基本切片:
使用.loc[]和.iloc[]可以基于标签和位置进行切片。
'''
print('1.基本切片:')
# 基于标签的切片
# df.loc['row_label':'row_label']
# 选择Name为'John'的行中Age列的数据
print(df.loc[0, 'Age'])
# 基于位置的切片
# df.iloc[0:3]
print(df.iloc[0:3])
#选择前3行的数据:
print(df.head(3))
'''
2.列切片:
使用列名或列索引可以对DataFrame的列进行切片。
'''
print('2.列切片:')
# 使用列名切片
# df[['Column1', 'Column2']]  # 选择Column1和Column2列
print(df[['Name','City']])
# 使用列索引切片
# df.iloc[:, 0:3]  # 选择前3列
print(df.iloc[:, 0:3] )
'''
3.行和列切片:
可以同时对行和列进行切片。
'''
print('3.行和列切片:')
# df.loc[0:3, ['Column1', 'Column2']]  # 选择前4行的Column1和Column2列
# 选择前两行的Name和City列:
print(df.loc[0:1, ['Name', 'City']])
'''
4.使用.loc[]和.iloc[]:
.loc[]用于基于标签的索引,而.iloc[]用于基于整数位置的索引。
'''
print('4.使用.loc[]和.iloc[]:')
print(df.loc[0:3])# 选择第0行到第3行(不包括第3行)
print(df.iloc[0:3])  # 选择第0列到第2列(不包括第3列)
'''
5.使用条件表达式切片
选择年龄大于30岁的行:
'''
print('5.使用条件表达式切片')
print(df[df['Age'] > 30])
'''
6. 多重条件切片
选择年龄大于30岁且城市为Berlin的行:
'''
print('6. 多重条件切片')
print(df[(df['Age'] > 30) & (df['City'] == 'Berlin')])
'''
7.使用query方法
选择年龄大于25岁的行:
'''
print('7.使用query方法')
print(df.query('Age > 25'))

'''
8.使用eval方法
计算新的列AgeNextYear为年龄加1:
'''
print('8.使用eval方法')
print(df.eval('AgeNextYear = Age + 1'))

 

(四)dataframe—名字

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'Name': ['John', 'Anna', 'Peter', 'Linda'],
    'Age': [28, 24, 35, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
})

'''
1. 设置DataFrame的索引名称
你可以为DataFrame的索引设置一个名称,这通常通过.index.name属性来完成。
'''
print('1. 设置DataFrame的索引名称')
# 设置索引名称
df.index.name = 'ID'
print(df)
'''
2.访问带有名称的索引
你可以通过索引名称来访问特定的行。
'''
print('2.访问带有名称的索引')
# 通过索引名称访问ID为1的行
print(df.loc[1])
# 使用列索引切片
# df.iloc[:, 0:3]  # 选择前3列
print(df.iloc[:, 0:3] )
'''
3.删除索引名称
如果你不再需要索引名称,可以通过将.index.name设置为None来删除它。
'''
print('3.删除索引名称')
df.index.name = None
print(df)
'''
4.使用索引名称进行条件筛选
你可以使用索引名称来筛选满足特定条件的行。
'''
print('4.使用索引名称进行条件筛选')
# 筛选年龄大于30岁的行
print(df[df['Age'] > 30])
'''
5.使用at和iat访问器
at和iat访问器允许你通过索引标签和列名来快速访问单个值。
'''
print('5.使用at和iat访问器')
# 使用at访问器
print(df.at[1, 'Name'])  # 输出:Anna

# 使用iat访问器
print(df.iat[2, 0])  # 输出:Peter
'''
6. 重置索引
如果你需要将索引标签转换为普通的列,可以使用reset_index()方法。
'''
print('6. 重置索引')
# 重置索引,将索引标签转换为列
df_reset = df.reset_index()
print(df_reset)
'''
7.设置多个索引名称
对于多重索引(MultiIndex),你可以为每个级别的索引设置名称。
'''
print('7.设置多个索引名称')
# 创建一个多重索引的DataFrame
index = pd.MultiIndex.from_tuples(
    [('John', 1), ('John', 2), ('Anna', 1), ('Anna', 2)],
    names=['Name', 'ID']
)
df_multi = pd.DataFrame({'Score': [85, 90, 88, 93]}, index=index)

print(df_multi)

 

(五)常见操作

import pandas as pd

# 创建一个DataFrame
data = {
    'Name': ['平平', 'Anna', '小王子', 'Linda'],
    'Age': [28, 24, 35, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
}
df = pd.DataFrame(data)
print(df)

#1.选择数据
print('==========1.选择数据============')
# 选择行
# 选择第2行的数据
print(df.iloc[2])
# 选择列
# 选择'Name'列
print(df['Name'])
# 选择行和列
# 选择第1行和第2列的数据(即'Anna'的'City')
print(df.iloc[1, 2])
#2.添加和删除列
print('==========2.添加和删除列============')
# 添加列
# 添加新列'Country'
df['Country'] = 'USA'
print(df)
# 删除列
# 删除'Country'列
df.drop('Country', axis=1, inplace=True)
print(df)
#3.修改数据
print('==========3.修改数据============')
# 修改'Peter'的年龄为36
df.loc[df['Name'] == 'Peter', 'Age'] = 36
print(df)
#4.排序和筛选
print('==========4.排序和筛选============')
#排序
# 按'Age'列升序排序
df_sorted = df.sort_values(by='Age')
print(df_sorted)
#筛选
# 选择'City'为'Berlin'的行
berlin_residents = df[df['City'] == 'Berlin']
print(berlin_residents)
#5.聚合和描述统计
print('==========5.聚合和描述统计============')
#聚合
# 按'City'列对'Age'列求平均值
average_age = df.groupby('City')['Age'].mean()
print(average_age)
#述统计
# 获取'Age'列的描述统计信息
age_stats = df['Age'].describe()
print(age_stats)
# 6.合并和连接
print('==========6.合并和连接============')
# 横向合并
# 创建一个新的DataFrame
df2 = pd.DataFrame({
    'Name': ['Chris', 'Diana'],
    'Age': [29, 27],
    'City': ['Madrid', 'Rome']
})

# 横向合并df和df2
df_concatenated = pd.concat([df, df2])
print(df_concatenated)
# 纵向合并
# 创建一个新的DataFrame
df3 = pd.DataFrame({
    'Name': ['John', 'Anna'],
    'Department': ['HR', 'Finance']
})

# 纵向合并df和df3
df_merged = pd.merge(df, df3, on='Name')
print(df_merged)
#7.处理缺失数据
print('==========7.处理缺失数据============')
# 填充缺失值
# 假设我们有一些缺失数据
df_missing = pd.DataFrame({
    'Name': ['Eve', None],
    'Age': [25, 30]
})

# 填充缺失值
df_missing.fillna({'Name': 'Unknown'}, inplace=True)
print(df_missing)
# 删除缺失值
# 删除包含缺失值的行
df_dropped = df_missing.dropna()
print(df_dropped)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2229825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vxe-table v4.8+ 与 v3.10+ 虚拟滚动支持动态行高,虚拟渲染更快了

Vxe UI vue vxe-table v4.8 与 v3.10 解决了老版本虚拟滚动不支持动态行高的问题,重构了虚拟渲染,渲染性能大幅提升了,行高自适应和列宽拖动都支持,大幅降低虚拟渲染过程中的滚动白屏,大量数据列表滚动更加流畅。 自适…

关于武汉芯景科技有限公司的马达驱动芯片AT6237开发指南(兼容DRV8837)

一、芯片引脚介绍 1.芯片引脚 二、系统结构图 三、功能描述 逻辑功能

青出于“蓝”的合资第一新能源,“换壳”背后有门道

文/王俣祺 导语:千呼万唤始出来的新能源“马6”终于亮相了,这款马自达EZ-6本以为凭借马自达多年来在国内市场深耕的底蕴可以收获一片支持,但最近却深陷“换壳”风波。那么今天我们就一起看看,这款马自达EZ-6和被冠以“原型”的深蓝…

Github上的十大RAG(信息检索增强生成)框架

信息检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种强大的技术,能够显著提升大型语言模型的性能。RAG框架巧妙地结合了基于检索的系统和生成模型的优势,可以生成更加准确、符合上下文、实时更新的响应。随着对先进人工智能解决方案需求的不断增长,GitHub上涌现出…

【小白学机器学习28】 统计学脉络+ 总体+ 随机抽样方法

目录 参考书,学习书 0 统计学知识大致脉络 1 个体---抽样---整体 1.1 关于个体---抽样---整体,这个三段式关系 1.2 要明白,自然界的整体/母体是不可能被全部认识的 1.2.1 不要较真,如果是人为定义的一个整体,是可…

5、片元着色器之基础光照模型:Phong模型和Blinn-Phong模型

1、什么是Phong光照模型? Phong模型就是在兰伯特模型的基础上增加了镜面反射光的计算。具体来说,兰伯特模型只考虑漫反射光,而Phong模型在此基础上引入了镜面反射光的概念,以模拟光线在光滑表面反射时产生的高光效果。镜面反射光的…

Ubuntu使用Qt虚拟键盘,支持中英文切换

前言 ​ 最近领导给了个需求,希望将web嵌入到客户端里面,做一个客户端外壳,可以控制程序的启动、停止、重启,并且可以调出键盘在触摸屏上使用(我们的程序虽然是BS架构,但程序还是运行在本地工控机上的),我…

ES(ElaticSearch)详解(含工作原理、基本知识、常见问题和优化方法)

文章目录 一、Lucene 和 ELK 的组成二、ES 配置文件参数解读三、ES 基本知识1、索引(Index):类似于关系型数据库的工作表2、类型(Type):废弃3、文档(Document):类似于关系…

巨好看的登录注册界面源码

展示效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevic…

记一次:使用使用Dbeaver连接Clickhouse

前言&#xff1a;使用了navicat连接了clickhouse我感觉不太好用&#xff0c;就整理了一下dbeaver连接 0、使用Navicat连接clickhouse 测试连接 但是不能双击打开&#xff0c;可是使用命令页界面&#xff0c;右键命令页界面&#xff0c;然后可以用sql去测试 但是不太好用&#…

ts:使用fs内置模块简单读写文件

ts&#xff1a;使用fs内置模块简单读写文件 一、主要内容说明二、例子&#xff08;一&#xff09;、fs模块的文件读写1.源码1 &#xff08;fs模块的文件读写&#xff09;2.源码1运行效果 三、结语四、定位日期 一、主要内容说明 在ts中&#xff0c;我们可以使用内置的fs模块来…

RFID技术让档案管理更高效、更可靠

RFID档案应用&#xff0c;即利用射频识别技术对档案进行管理&#xff0c;其价值主要体现在以下几个方面&#xff1a; PART01效率提升 RFID技术通过无线射频识别&#xff0c;能够快速、准确地识别档案信息&#xff0c;大大提高了档案管理的效率。在传统的档案管理中&#xff0c;…

《数字图像处理基础》学习04-图像的量化

在上一篇文章中&#xff0c;已经实现了对图像的采样。 《数字图像处理基础》学习03-图像的采样-CSDN博客 接着就需要对图像进行量化操作。 目录 一&#xff0c;量化的相关概念 二&#xff0c;matlab编写程序生成量化图像 1&#xff0c;要求 2&#xff0c;思路及注意点…

逻辑代数的基本公式

根据图中的逻辑运算符号&#xff0c;包括与非逻辑&#xff08;NAND&#xff09;、或非逻辑&#xff08;NOR&#xff09;、与或非逻辑、异或逻辑&#xff08;XOR&#xff09;和同或逻辑&#xff08;XNOR&#xff09;&#xff0c;我们可以分别给出每个运算符的真值表。 1. 与非逻…

iptables面试题

1、详述iptales工作流程以及规则过滤顺序&#xff1f; iptables过滤的规则顺序是由上至下&#xff0c;若出现相同的匹配规则则遵循由上至下的顺序 2、iptables的几个表以及每个表对应链的作用&#xff1f; Iptables有四表五链 Filter表 : Filter表是iptables中使用的默认表…

Java Collection/Executor DelayedWorkQueue 总结

前言 相关系列 《Java & Collection & 目录》《Java & Executor & 目录》《Java & Collection/Executor & DelayedWorkQueue & 源码》《Java & Collection/Executor & DelayedWorkQueue & 总结》《Java & Collection/Executor &a…

[Python学习日记-59] 开发基础练习2——网站访问日志分析

[Python学习日记-59] 开发基础练习2——网站访问日志分析 简介 题目 答案 简介 该练习结合了函数和一些常用的模块开发了一个对网站访问日志分析的程序&#xff0c;可以巩固实践之前学习的内容。 题目 基本需求&#xff1a; 统计本日志文件的总 pv、uv 数列出全天每小时的…

tiktok批量添加达人怎么弄

在 TikTok 上批量添加达人可以借助一些工具或方法&#xff0c;以下是一些常见的途径&#xff1a; 点我达秘免费体验地址注册 使用达人邀约工具&#xff1a; 功能特点&#xff1a;这类工具专为 TikTok 跨境小店和本土小店提供服务&#xff0c;可以实现多国家、多店铺同时私信和…

深度学习-激活函数详解

激活函数在神经网络中的作用是引入非线性特征&#xff0c;使得网络可以拟合和表达更复杂的数据关系。它通过对输入进行非线性变换&#xff0c;让每一层的输出既能反映输入特征&#xff0c;又能传递重要信息&#xff0c;以进行梯度更新。以下是关于常用激活函数的详细讲解。 1.…

基于vue框架的的乐守护儿童成长记录系统b65tg(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,成长指标,疫苗接种,学业档案,课外活动,旅游经历,交流论坛 开题报告内容 基于Vue框架的乐守护儿童成长记录系统开题报告 一、研究背景与意义 随着科技的飞速发展和家庭对子女成长关注度的不断提升&#xff0c;如何科学、系统地记…