Pandas数据输出

数据输出

目录

  1. 数据合并

  2. 1 merge()方法

  3. 2 concat()方法

  4. 数据移位

  5. 数据转换

  6. 1 DataFrame转换为字典

  7. 2 DataFrame转换为列表

  8. 3 DataFrame转换为元组

  9. 4 DataFrame转换为HTML网页格式

  10. 数据导出

  11. 1 导出为.xlsx文件

  12. 2 导出为.csv文件

1. 数据合并

1.1 merge()方法

按照列名相同的列进行合并

1
2
3
4
5
6
7
8
pa.merge(df1, df2, how='inner', on=None, left_on=None, right_on=None, 
left_index=False, right_index=False, sort=False,
suffixes=('_x','_y'), copy=True, indicator=False, validate=None)
'''
特别注意:how='inner'
how有4种可选择的合并方式,与SQL对应。
left左合并,right右合并,inner内合并,outer外合并
'''
  1. 通过索引进行合并

df3 = pd.merge(df1, df2, right_index=True, left_index=True)

  1. 通过某一相同列进行合并

df3 = pd.merge(df1, df2, on='same_column')

  1. 当表格记录数不同时,合并后保存全部数据

df3 = pd.merge(df1, df2, on='same_column', how='outer')

1.2 concat()方法

1
2
pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, 
levels=None, names=None, verify_integrity=False, sort=False, copy=True)
  1. 相同字段的表首尾相接

dfs = [df1, df2, df3]

不显示表名
result = pd.concat(dfs)

显示表名
result = pd.concat(dfs,keys=['df1_name', 'df2_name', 'df3_name'])

  1. 横向表合并

两张表必须至少有一列的列名是相同的

填充缺失值
result = pd.concat([df1, df2], axis=1)

不填充缺失值
result = pd.concat([df1, df2], axis=1, join='inner')

指定主表
result = pd.concat([df1,df2], axis=1, join_axes=[df.index])

2. 数据移位

数据移位就是其他数据保持不变,索引也不变,但是被移位后的某行或者某列的数据的索引值为原索引+periods(移动步伐)。

df['shifted_column'].shift(periods=1, freq=None, axis=0)

period可正可负
axis=1表示行,axis=0表示列

3. 数据转换

3.1 DataFrame转换为字典

使用to_dict()方法将表格转换为字典,其中表格的索引为字典的键,其他列为字典的值。

my_dict = df.to_dict()

3.2 DataFrame转换为列表

将表格中的某一列转换为列表

list1 = df1['column1'].values.tolist()

3.3 DataFrame转换为元组

按行读取DataFrame数据后,使用tuple()函数将其转换为元组。

tuples = [tuple(x) for x in df1.values]

3.4 DataFrame转换为HTML网页格式

df.to_html('my_html.html', header=True, index=False)

数据导出

4.1 导出为.xlsx文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
df.to_excel(excel_writer, sheet_name='sheet1', na_rep='', 
float_format=None, columns=None, header=True,
index=True, index_label=None, startrow=0, startcol=0,
engine=None, merge_cells=True, encoding=None, inf_rep='inf',
verbose=True, freeze_pandas=None)

'''
excel_writer: excel导出对象及路径
sheet_name='sheet1': 更改表单名称
na_rep='' : 缺失数据的表示方式,默认为空格
float_format=None:格式化浮点数的字符串
columns=None : 可选参数,将要导出的列
header=True:列名
index=True: 行名
index_label=None :不懂
startrow=0:从第几行开始导出
startcol=0:从第几列开始导出
engine=None:指定需要使用的引擎
merge_cells=True:布尔值,是否合并单元格
encoding=None:编码方式
inf_rep='inf':默认值
verbose=True:默认值
freeze_pandas=None:指定要冻结的行列
'''

df.to_excel('my_excel.xlsx')

df.to_excel('my_excel', sheet_name='df')

df.to_excel('my_excel', sheet_name='df', startrow=2)

df.to_excel('my_excel', sheet_name='df', freeze_pandas=(1,1))

df.to_excel('my_excel',sheet_name='column1_name', columns=['cloumn1'])

4.2 导出为.csv文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
df.to_csv(path_or_buf, sep='', na_rep=',', float_format=None, coumns=None, header=True, index=True, index_label=None, mode='w',
encoding=None, compression='infer', quoting=None, quotechar="", line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.', errors='strict')

path_or_buf: 文件名称或者路径
sep=',': 分隔符,默认为,
na_rep='':缺失值填充,默认为空格
float_format=None:浮点数格式设置
coumns=None:导出列选择
header=True:列名
index=True: 行名
index_label=None:行标签
mode='w':写入模式
encoding=None:编码方式
compression='infer':压缩模式
quoting=None:是否对导出的每个字段添加引号,默认不加引号,quoting=1 为添加引号
quotechar="":当quoting=1 时,指定单引号或者双引号,默认为双引号
line_terminator=None:换行符,默认为'\n'
chunksize=None:一次性写入csv的行数,当数据量级较大时,需要分批写入
date_format=None:时间日期格式设置
doublequote=True:是否添加双引用符号,默认为True
escapechar=None:设置转义字符
decimal='.':可识别十进制分隔符的字符
errors='strict':指定如何处理解码和编码错误

df.to_csv('my_csv.csv')

df.to_csv('my_csv.csv',sep='?')

df.to_csv('my_csv.csv',na_rep='NA')

df.to_csv('my_csv.csv', float_format='%.2f')

df.to_vsc('my_csv.csv', columns=['column1'])

df.to_csv('my_csv.csv', header=False, index=False)– 既不保留列名,也不保留行索引


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!