【Pandas】Dataframe 数据读取 『excel | csv | txt』

1. 数据读取

1.1 读取excel文件

import pandas as pd
data=pd.read_excel('path', sheet_name='sheet1', header=0, names=['第一列','第二列','第三列'])
  • path: 文件路径
    在这里插入图片描述

  • sheetname:指定读取excel中的哪一个工作表,默认sheetname=0,即默认读取excel中的第一个工作表
    若sheetname = ‘sheet1’,即读取excel中的sheet1工作表;

  • header: 用作列名的行号,默认为header=0

    • 若header=None,则表明数据中没有列名行

    • 若header=0,则表明第一行为列名

  • names: 重命名列名

1.2 读取csv、txt文件

import pandas as pd
data=pd.read_csv('path', sep = ',', header = 0, names = ["第一列""第二列""第三列"], encoding='utf-8')
  • path: 要读取的文件的绝对路径
  • sep:指定列和列的间隔符,默认sep=‘,’
  • header:用作列名的行号,默认为header=0
    • 若header=None,则表明数据中没有列名行
    • 若header=0,则表明第一行为列名
  • names: 重命名列名
  • encoding: 指定用于unicode文本编码格式

2. 数据写入

2.1 写入excel

(1) 语法

df.to_excel(
	excel_writer, #存放excel文件的地址。如果是只写文件名,不写具体的地址也可。会和py文件存放到一起。
	sheet_name='Sheet1', #sheet的名字。一般默认为sheet1
	na_rep='', #缺失值表示方式,一般默认为''。
	float_format=None, #格式化浮点数的字符串。
	columns=None, #要写入excel中的列。list。一般默认None,即全部写入。
	header=True, #header即列名是否为columns,一般默认为True。
	index=True, #index是否写入excel,一般默认为True。
	index_label=None, #要写入excel中的index列。
	startrow=0, #从哪一行开始写入数据。默认为0,即第一行。
	startcol=0, #从哪一列开始写入数据。默认为0,即第一列。
	engine=None, #可选参数, 用于写入要使用的引擎, openpyxl或xlsxwriter
	merge_cells=True, #返回布尔值, 其默认值为True。它将MultiIndex和Hierarchical行写为合并的单元格。
	encoding=_NoDefault.no_default, #默认为'utf-8'
	inf_rep='inf', #可选参数, 默认值为inf。它通常表示无穷大。
	verbose=_NoDefault.no_default, #它的默认值为True。返回布尔值。它用于在错误日志中显示更多信息。
	freeze_panes=None, #整数的元组(长度2),默认为None。可选参数, 用于指定要冻结的最底部一行和最右边一列。
	storage_options=None
)

(2) 覆盖写入例子

注意:要写入的excel和sheet已存在,则会覆盖

import pandas as pd
#创建一个数据
df = pd.DataFrame({
    'name':['Lily','Jack','Rose','Joe'],
    'age':[23,23,33,45],
    'job':['student','doctor','worker','lawyer']
},index=range(1,5),
)
#将index重新命名为id
df.index.name='id'
# print(df)
#写入excel
df.to_excel(r'C:\Users\XXXXXX\Desktop\pandas写入excel.xlsx', index=True, columns=['name','age'], header=True, startrow=20)

(3) 追加写入例子

需要:先读取原表,将现有数据与原表数据拼接后再写入

import pandas as pd
#读取Excel中的数据
df_0 = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas写入excel.xlsx', sheet_name='sheet_1')
#修改一下索引,将id改成索引。
df_0 = df_0.set_index(keys=['id'])
print(df_0)
#创建一个数据
df = pd.DataFrame(
	{
	    'name':['Lily','Jack','Rose','Joe'],
	    'age':[23,23,33,45],
	    'job':['student','doctor','worker','lawyer']
	},
	index=range(1,5),
)
#将index重新命名为id
df.index.name='id'
print(df)
 
df_new = pd.concat([df,df_0],axis=0)
print(df_new)
#将df_new写入excel,这个是只针对一个sheet的表格,如果是多个sheet,是消失的。因为,这其实相当于删除原来的,新建了一个表。
df_new.to_excel(r'C:\Users\XXXXXX\Desktop\pandas写入excel.xlsx',sheet_name='sheet_1',index=True)

2.2 写入csv、txt

(1) 语法

df.to_csv(
	path_or_buf=None, #文件存储路径
	sep=',', #分隔符
	na_rep='', #缺失值填充,默认为''
	float_format=None, #浮点小数的格式。
	columns=None, #list。要写入的字段。一般默认为None,即全部写入。
	header=True, #列名。默认为True,即写入的列名为,df的列标签。
	index=True, #行索引。默认为True,即写入的行索引为,df的行标签。
	index_label=None, #索引列的标签名。
	mode='w', #写入模式{"w","a","r","w+","a+","r+"},一般默认为"w",写入。
	encoding=None, #编码。
	compression='infer', #
	quoting=None, 
	quotechar='"', 
	lineterminator=None, 
	chunksize=None, #一次写入的行数。
	date_format=None, #日期格式。
	doublequote=True, 
	escapechar=None, 
	decimal='.', 
	errors='strict', 
	storage_options=None
)

(2) 覆盖/追加写入

import pandas as pd
#先构造一个列表数据
data_list = [['name','age','job'],['Lucy',33,'doctor'],['Tom',34,'teacher'],['Anna',22,'student']]
df = pd.DataFrame(data_list[1:], columns=data_list[0])

# 1. 覆盖写入
df.to_csv(r'C:\Users\XXXXXX\Desktop\list_2_excel.csv',index=False,sep=',')

# 2. 追加写入
df.to_csv(r'C:\Users\XXXXXX\Desktop\list_2_excel.csv',index=False,sep=',',mode='a',header=False) #header=False时,列名才不会追加进去。
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElegantCodingWH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值