pandas 数据的存入和导出(数据库及文件)
·
导出导入数据【重要】
-
导入加载数据
pd.read_xxx('文件路径') # 常用方法 read_csv(),read_excel() # 加载mysql数据库数据 # 方法一:用DBAPI构建数据库链接engine import pandas as pd import pymysql conn = pymysql.connect(host='localhost', user='root', password='', database='database_name') df = pd.read_sql("select * from table_name",con=conn) # 方法二:用sqlalchemy构建数据库链接engine import sqlalchemy from sqlalchemy import create_engine #connect_info = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT, DATABASE) connect_info = 'mysql+pymysql://{}:{}@{}:{}/{}'.format('root', '', 'localhost', 3306, 'nowcoderdb') engine=create_engine(connect_info) df=pd.read_sql("select * from table_name",con=engine) -
导出数据
pd.to_xxx('文件路径') # 常用方法 to_csv(),to_excel() # 导出数据到msyql数据库 import sqlalchemy from sqlalchemy import create_engine #connect_info = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT, DATABASE) connect_info = 'mysql+pymysql://{}:{}@{}:{}/{}'.format('root', '', 'localhost', 3306, 'nowcoderdb') engine=create_engine(connect_info) df.to_sql('表名',engine,if_exists='') # if_exists='',replace:删除表,重新创建保存数据(覆盖数据),append:向表中追加数据
Pickle文件
保存为pickle文件
- 调用to_pickle方法将以二进制格式保存数据
- 如要保存的对象是计算的中间结果,或者保存的对象以后会在Python中复用,可把对象保存为.pickle文件
- 如果保存成pickle文件,只能在python中使用
- 文件的扩展名可以是.p,.pkl,.pickle
scientists = pd.read_csv('data/scientists.csv')
names = scientists['Name']
names.to_pickle('scientists_name.pickle')
scientists.to_pickle('scientists_df.pickle')
读取pickle文件
可以使用pd.read_pickle函数读取.pickle文件中的数据
scientists_name = pd.read_pickle('scientists_name.pickle')
print(scientists_name)
# 输出结果如下
0 Rosaline Franklin
1 William Gosset
2 Florence Nightingale
3 Marie Curie
4 Rachel Carson
5 John Snow
6 Alan Turing
7 Johann Gauss
Name: Name, dtype: object
CSV文件
我们用pd.read_csv()函数读取csv文件,使用df.to_csv()将数据保存为csv文件
- 在CSV文件中,对于每一行,各列采用逗号分隔;使用
\n换行符换行 - 除了逗号,还可以使用其他类型的分隔符,比如TSV文件,使用制表符作为分隔符
- CSV是数据协作和共享的首选格式,因为可以使用excel打开
# 默认使用逗号作为分隔符
names.to_csv('scientists_name.csv')
# TSV文件,设置分隔符必须为\t
scientists.to_csv('scientists_df.tsv', sep='\t')
#不在csv文件中写行名
scientists.to_csv('scientists_df_noindex.csv', index=False)
Excel文件
注意:根据anaconda的版本不同,pandas读写excel有时需要额外安装
xlwt、xlrd、openpyxl三个包pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlwt pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlrd
保存成Excel文件
- Series这种数据结构不支持to_excel方法,想保存成Excel文件,需要把Series转换成DataFrame
names_df = names.to_frame()
import xlwt
names_df.to_excel('scientists_name_df.xls')
names_df.to_excel('scientists_name_df.xlsx')
# xls 是一个特有的二进制格式,其核心结构是复合文档类型的结构,而 xlsx 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小;xlsx的最后一个x表是xml
# xls是excel2003及以前版本生成的文件格式,而xlsx是excel2007及以后版本生成的文件格式。
- DataFrame直接保存为Excel格式
scientists.to_excel('scientists_df.xlsx', sheet_name='scientists', index=False)
读取Excel文件
使用pd.read_excel() 读取Excel文件
pd.read_excel('scientists_df.xlsx')
# 输出结果如下
Name Born Died Age Occupation
0 Rosaline Franklin 1920-07-25 1958-04-16 37 Chemist
1 William Gosset 1876-06-13 1937-10-16 61 Statistician
2 Florence Nightingale 1820-05-12 1910-08-13 90 Nurse
3 Marie Curie 1867-11-07 1934-07-04 66 Chemist
4 Rachel Carson 1907-05-27 1964-04-14 56 Biologist
5 John Snow 1813-03-15 1858-06-16 45 Physician
6 Alan Turing 1912-06-23 1954-06-07 41 Computer Scientist
7 Johann Gauss 1777-04-30 1855-02-23 77 Mathematician
更多推荐


所有评论(0)