Python开发使用Pandas包进行Excel表格数据操作
文章目录
DataFrames的简单介绍及其创建
Dataframes相当于是Excel表格中的一个Sheet表,它有列名,行索引,还有每行都有若干个与表的列名对应的数据
使用Pandas的API可以从一个Excel文件或者CSV文件中读取某一个Sheet表,而这个Sheet表中的数据会被转化成DataFrames的结构。同理,当我们想使用Pandas库将我们格式化后的数据输出到一个Sheet表中(不论是Excel文件或是CSV文件)时,我们也要创建一个DataFrames的结构,将我们的数据以DataFrames的形式作为参数传递给Pandas的函数,让其将我们的数据持久化到文件中,因此,这就是我们学习DataFrames的原因
与创建DataFrames有关的3种数据结构
- 使用列表字典 ( { ‘column1’ : [‘d1’, ‘d2’, ‘d3’ …], ‘column2’ : [‘d1’, ‘d2’, ‘d3’ … ]… } )
- 使用字典列表 ( [ { ‘column1’ : ‘d1’, ‘column2’ : ‘d2’ }, { ‘column1’ : ‘d1’, ‘column2’ : ‘d2’ } … ] )
- 使用双层列表 ( [ [‘d1’, ‘d2’, ‘d3’], [‘d4’, ‘d5’, ‘d6’] … ] )
创建DataFrames的函数
- pandas.DataFrame( args… )
代码展示
# TODO 使用字典列表创建DataFrames lists_dicts = list() dic1 = {'name':'name1', 'group':'group1'} dic2 = {'name':'name2', 'group':'group2'} lists_dicts.append(dic1) lists_dicts.append(dic2) df = pd.DataFrame(lists_dicts) '''
writer = pd.ExcelWriter('/Users/wong/Desktop/test.xlsx')
df.to_excel(writer, index=False)
writer.save()
writer.close()
''' # TODO 使用列表字典创建DataFrames dicts_lists = dict() dicts_lists.setdefault('age', ['age1', 'age2']) dicts_lists.setdefault('sex', ['sex1', 'sex2']) df = pd.DataFrame(dicts_lists) '''
writer = pd.ExcelWriter('/Users/wong/Desktop/test.xlsx')
df.to_excel(writer, index=False)
writer.save()
writer.close()
''' # TODO 使用二维列表创建DataFrames lists_2dimen = [] column_list = ['name', 'group', 'age', 'sex'] lists_2dimen.append(['name1', 'group1', 'age1', 'sex1']) lists_2dimen.append(['name2', 'group2', 'age2', 'sex2']) df = pd.DataFrame(lists_2dimen, columns=column_list) '''
writer = pd.ExcelWriter('/Users/wong/Desktop/test.xlsx')
df.to_excel(writer, index=False)
writer.save()
writer.close()
'''
执行结果
-
TODO 1
-
TODO 2
-
TODO 3
Pandas中有关Excel表格文件读入与创建的函数介绍
- pandas.read_excel( args… )
- pandas.ExcelWriter( args… )
- DataFrames.to_excel( args… )
- DataFrames.iterrows( )
各函数的重要参数介绍
- pandas.read_excel( args… )
sheet_name : str, int, list, None, 默认为0
如果参数是字符串, 则是指定对应的表名; 参数是整数型时, 指定对应sheet的位置, 从0开始; 参数是字符串列表或整数型列表时, 则是指定多个sheet表; 如果参数为None, 则是指定全部sheet
header : int, list of int, 默认为0
如果参数是整数型, 指定对应的行为表头; 如果参数是整数型列表, 指定多行为表头; 默认为0, 也就是第一行; 置为None时, 表示表中没有表头即列名这一行
names : list of string, 默认为0
如果参数是字符串列表, 指定与列表中的字符串匹配的列; 如果表没有表头, 那么可以指定为None
index_col : int, list of int, 默认为None
如果参数是整数类型, 指定对应的列为索引列, 也就是类似每一行的唯一标识; 如果参数是整数列表, 指定多个列作为索引列; 默认为None, 也就是不指定任何一列
- pandas.ExcelWriter( args… )
path : str
指定Excel文件的输出路径
- DataFrame.to_excel( args… )
excel_writer : str or ExcelWriter object
如果参数是字符串, 指定Excel文件的输出路径; 如果参数是ExcelWriter对象, 则是ExcelWriter对象指定的路径
sheet_name : str, default 'Sheet1’
如果参数是字符串, 则是指定创建的sheet名; 默认为’Sheet1’
columns : sequence or list of str, optional
如果参数是字符串列表, 则创建该字符串列表作为表头, 也就是列名
header : bool or list of str, default True
如果参数是布尔值, 则是选择输出表头列是否开启; 如果参数是字符串列表, 则是创建该字符串列表为表头, 也就是列名; 默认为开启
index : bool, default, True
如果参数是布尔值, 则是输出每一行的行标识 ( 默认是索引值 ), 默认为开启
index_label : str or sequence, optional
为索引列指定列名; 如果header参数和index参数为True时, 则该参数则是索引列的列名
- DataFrame.iterrows( )
该函数返回一个可用于遍历dataframe结构每一行的迭代器, 常用语句是for index, row in DataFrame.iterrows( )
从数据抽取到创建DataFrames, 最后数据持久化到文件的流程展示
源数据表与数据导出目标格式
代码展示
import pandas as pd # 源数据没有表头即列名这一行, 所以header置为None t1 = pd.read_excel('/Users/wong/Desktop/test1.xlsx', header=None) # 定义一个字典来格式化数据 data_dic = dict() # 抽取源数据 for index, row in t1.iterrows(): data_dic.setdefault(row[0], []) if data_dic[row[0]].__contains__(row[0]) == False: data_dic[row[0]].append(row[0]) data_dic[row[0]].append(row[1]) # 转化成双层列表 data_list = list() for key in data_dic: data_list.append(data_dic[key]) # 根据双层列表创建DataFrame并将数据输出到文件中 df = pd.DataFrame(data_list, columns=['name', 'age', 'group', 'sex']) df.to_excel('/Users/wong/Desktop/test2.xlsx', index=False)
执行结果
Pandas官方中文文档及英文文档
''' https://www.pypandas.cn/ ''' ''' https://pandas.pydata.org/ '''
本文地址:https://blog.csdn.net/weixin_41741302/article/details/109032547