I/O 工具主要是提供数据和文件读取的函数,Pandas支持常用的文本格式数据,二进制数据,SQL数据。
常用函数:
读写csv read_csv 和 to_csv
读写Excel read_excel 和 to_excel
读写数据库 read_sql 和 to_sql
read函数读取文件数据,返回pandas对象【Series】和【DataFrame】,to函数写入数据到csv,excel,sql等文件和数据库。
更多函数详情请见:pandas 中文手册-IO工具
读写Excel
import pandas as pd
## 打开Excel和打印Excel前10行数据
df=pd.read_excel(r'C:\Users\Administrator\Desktop\测试数据.xlsx',sheet_name='测试数据')
print(df.head(10))
## 保存Excel
"方法一:"
df.to_excel(r'C:\Users\Administrator\Desktop\保存数据1.xlsx',sheet_name='测试数据',index=False')
"方法二:"
writer=pd.ExcelWriter(r'C:\Users\Administrator\Desktop\保存数据2.xlsx')
df.to_excel(writer,sheet_name='test1',index=False)
df.to_excel(writer,sheet_name='test2',index=False)
writer.save()
方法一仅输出一张sheet,方法二可以输出多张sheet,当多个数据需要输出到同一个工作簿时选择方法二
读写txt
import pandas as pd
path=r'C:\Users\Administrator\Desktop\FAStest.txt'
data=pd.read_table(path,'utf-8','\t')
print(data)
data=pd.read_csv(path,'utf-8','\t')
data=pd.read_csv(path,'utf-8','\t',usecols=range(3,27))
print(data)
注意:
1.read_csv和read_table的区别在于separator分隔符。csv是逗号分隔值,默认按照','分割的数据。read_table的分隔符是tab,
默认'\t'来分割数数据,usecols取数据的几列到几列的数据。
2.读取txt文件的时候经常会遇到以下报错
'utf-8' codec can't decode byte 0xff in position 0: invalid start byte------ utf-8 不能解码txt文件
百度解决方案的时候通常建议改成'gbk',但是还是会存在报错,造成这样报错的原因是文件的编码方式和读取用的解码方式不一致导致的。
解决方法一:修改成文件的编码方式
解决方式二:更改txt的编码方式,打开txt文档——另存为——修改编码方式
3.编码格式介绍
ASCII码:使用单字节编码,所以范围基本只有英文字母、数字和一些特殊字符;只有256个字节
Unicode:能够表示全世界的所有字符
GBK:只用来编码汉字的,GBK全称《汉字编码扩展规范》双字节编码。
UTF-8:针对Unicode的可变字符编码,又称万能码。
读写csv
import pandas as pd
path=r'C:\Users\Administrator\Desktop\FAStest.csv'
data=pd.read_csv(path,encoding='utf-8')----读取CSV文件
data.to_csv(r'C:\Users\Administrator\Desktop\test2.csv') ---写入CSV文件
读写数据库
db = cx.connect('o_wuliu/o_wuliuqwe@10.60.44.22:1621/HQYGEDW') #连接数据库
cr=db.cursor()
sql='''select* from MY_CDP_B_AREA '''
cr.execute(sql)
df=pd.read_sql(sql,db)
conn = create_engine('o_wuliu/o_wuliuqwe@10.60.44.22:1621/HQYGEDW')
a.to_sql('my_index_database',conn,if_exists='append',index=False,dtype={'周期': types.VARCHAR(255),
'类型': types.VARCHAR(255),
'指标类型':types.VARCHAR(255),
'指标值':types.FLOAT()})
db.close() ----【适用于Oracle和MySQL批量写入】
写入hive数据库方法:python 向hive传入数据