Pandas处理excel
基本使用
pandas是一个用于数据处理和分析的python库,提供了许多数据结构,其中最常用的是DataFrame和Series。
创建 DataFrame:可以使用字典或二维数组来创建
For example:
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
去除整行为nan值的行
df = df.dropna(how='all')
将df数据转为字典
df.to_dict()
将df按照行数据转为列表
df.values.tolist()
读取和写入文件:
pandas 支持多种文件格式,如 CSV、Excel 和 SQL 数据库
可以使用 read_csv、read_excel 等方法来读取文件,使用 to_csv、to_excel 等方法来写入文件
import pandas as pd
df = pd.read_csv('data.csv')
df.to_csv('output.csv')
数据选择和过滤:
可以使用 loc 和 iloc 方法来选择和过滤数据。loc 方法通过行、列的名称或标签来索引,而 iloc 方法则通过行、列的索引位置来寻找数据
import pandas as pd
df = pd.read_csv('data.csv')
data1 = df.loc[0, 'A']
data2 = df.iloc[0, 0]
数据处理:
pandas 提供了许多方法来处理数据,如排序、分组和聚合。您可以使用 sort_values、groupby 和 agg 等方法来处理数据
df = pd.read_csv('data.csv')
df = df.sort_values(by='A')
grouped = df.groupby('A')
result = grouped.agg('sum')
read_excel常用参数
- io:文件路径或类似文件的对象。[一般直接写就文件名或路径即可]
- sheet_name:要读取的表格名称或索引,默认为 0,表示读取第一个表格。
- header:指定行数用来作为列名,数据开始行数。如果文件中没有列标题,则应该设置为 None。
- names:指定列名,如果文件中不包含列标题行,应该设置。
- index_col:指定某列作为行索引。
- usecols:返回一个数据子集,该列表中的值必须与文件中的列名相匹配或者是位置索引。
- skiprows:跳过指定行数的数据。
- nrows:读取指定行数的数据。
- na_values:指定哪些值应该被视为缺失值。
to_excel常用参数
- excel_writer:文件路径或类似文件的对象。
- sheet_name:要写入的表格名称,默认为 'Sheet1'。
- na_rep:缺失值的表示方式,默认为 ''。
- float_format:浮点数的格式字符串,例如 '{:.2f}'。
- columns:要写入的列,如果未指定,则写入所有列。
- header:是否写入列名,默认为 True。
- index:是否写入行索引,默认为 True。
- index_label:行索引的列名,如果未指定,则不写入行索引列名。
- startrow:起始行位置,默认为 0。startcol:起始列位置,默认为 0。
loc方法
loc 是 pandas 库中 DataFrame 对象的一个属性,它提供了一种基于标签的索引方法。可以使用 loc 来通过行标签和列标签来选择数据。
基本用法
df.loc[row_label, column_label]
df 是一个 DataFrame 对象,row_label 是行标签,column_label 是列标签。可以使用逗号分隔的两个参数来指定要选择的行和列。
选择第一行第一列的数据
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
result = df.loc['x', 'A'] # result是1
选择多行或多列数据 【前两行数据】
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
result = df.loc[['x', 'y']]
多行和指定列数据 【前两行和两列】
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
result = df.loc['x':'y', 'A':'B']
iloc方法
iloc 是 pandas 库中 DataFrame 对象的一个属性,它提供了一种基于位置的索引方法。可以使用 iloc 来通过行位置和列位置来选择数据
基本用法
df.iloc[row_position, column_position]
df 是一个 DataFrame 对象,row_position 是行位置,column_position 是列位置。可以使用逗号分隔的两个参数来指定要选择的行和列
选择第一行第一列的数据
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
result = df.iloc[0, 0]
选择多行或多列数据
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
result = df.iloc[0:2]
选择前两行前两列的数据
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
result = df.iloc[0:2, 0:2]
常用操作
查询指定列名下对应的变量的索引,做删除和添加数据操作
index = df[df['column_name'] == 'variable'].index[0]
df.drop(index,inplace=True) # inplace=True表示改变原数据
————————————————————————————————————————————————
使用 loc 方法来在指定的索引位置添加数据
df.loc[index, 'column_name'] = value
多个列中添加数据
df.loc[index, ['column1', 'column2']] = {'column1': value1, 'column2': value2}
------------------------------------------------
查询指定列名下的变量对应的整行的值
value_list = df.loc[df['column_name'] == 'variable'].values[0]
# 将多个df写入同一个excel中
使用pd.ExcelWriter方法
【括号内必须是到excel的名字的路径!!!】
with pd.ExcelWriter(os.path.join(self.save_path, 'data.xlsx')) as writer:
df1.to_excel(writer, sheet_name='df1')
df2.to_excel(writer, sheet_name='df2')
给df的index排序【按照数据排序index】
sort_index()
------------------------------------
比较两个index和column完全一样的excel
compare()
dict1 = {'A': [1, 2, 3], 'B': [2, 5, 7]}
dict2 = {'A': [1, 0, 3], 'B': [2, 5, 8]}
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
bool = df1.equals(df2) # false
diff = df1.compare(df2)
最后的结果是展示两个df中不同的地方,相同的地方写的是NaN
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-08-24 前端之盒子模型和定位