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

image


posted @ 2023-08-24 17:30  Hsummer  阅读(159)  评论(2编辑  收藏  举报