导出导入数据【重要】

  • 导入加载数据

    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有时需要额外安装xlwtxlrdopenpyxl三个包

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

更多推荐