比较系统的学习 pandas (2)
pandas 数据读取与输出方法和常用参数
1、读取 CSV文件
pd.read_csv("path+name",step,encoding="gbk",header="infer",name=[],skip_blank_lines=True,comment=None)
path : 文件路径
step : 指定分隔符,默认为 逗号
encoding : 文件内容的编码格式,,通常指定为'utf-8'
header : 指定第几行是表头,默认会自动推断把第一行作为表头。header =None ,没有表头
names: 列表,可选。指定列名的列表,如果数据文件中不包含列名,通过names指定列名,若指定则应该设置header=None。列名列表中不允许有重复值。
comment: 字符串,默认值None。设置注释符号,注释掉行的其余内容。将一个或多个字符串传递给此参数以在输入文件中指示注释。注释字符串与当前行结尾之间的任何数据都将被忽略。
na_rep: 字符串,默认值''(空字符)。缺失值表示方式
pd.read_csv('data/data.csv',encoding="gbk") # 注意目录层级
pd.read_csv('data.csv') # 如果文件与代码文件在同一目录下
pd.read_csv('data/my/my.data') # CSV文件的扩展名不一定是.csv
# 本地绝对路径
pd.read_csv('/user/gairuo/data/data.csv')
# 使用URL
pd.read_csv('https://www.gairuo.com/file/data/dataset/GDP-China.csv')
# 数据分隔符默认是逗号,可以指定为其他符号
pd.read_csv(data, sep='\t') # 制表符分隔tab
pd.read_table(data) # read_table 默认是制表符分隔tab
pd.read_csv(data, sep='|') # 制表符分隔tab
pd.read_csv(data,sep="(?<!a)\|(?!1)", engine='python') # 使用正则表达式
pd.read_csv(data, names=['列1', '列2'], header=None)
2、输出到 csv 文件
data.to_csv("path+name",sep=",",na_rep="",index=True,header=True,encoding="utf-8,compression=None)
path : 输文件出路径
sep :指定分隔符,默认为 逗号
index :是否将索引一起导入,一般需要设置为 False
header : 如果不需要表头,可以将 header 设置为 False,
encoding : 输出文件的编码格式
compression :字符串或字典,默认值'infer'。用于磁盘数据的实时解压缩。可选值:{'infer', 'zip', 'gzip', 'bz2', 'zstd', 'tar'}。如果使用'infer',且如果filepath_or_buffer是以‘.gz’, ‘.bz2’, ‘.zip’, ‘.xz’结尾的字符串,则使用gzip、bz2、zip或xz,否则不进行解压缩。如果使用‘.zip’,则ZIP文件必须只包含一个要读取的数据文件。设置为None,表示不解压。如果文件较大,可以使用compression进行压缩
df.to_csv('data/done.csv') # 可以指定文件目录路
df.to_csv('done.csv', index=False) # 不要索引
# 创建一个包含out.csv的压缩文件out.zip
compression_opts = dict(method='zip',archive_name='out.csv')
df.to_csv('out.zip', index=False,compression=compression_opts)
3、读取 excel 文件
pd.read_excel("path+name", sheet_name=0,header=0,encoding="utf-8",names=[],comment=None)
path : 文件路径
step : 指定分隔符,默认为 逗号
encoding : 文件内容的编码格式,,通常指定为'utf-8'
names: 列表,可选。指定列名的列表,如果数据文件中不包含列名,通过names指定列名,若指定则应该设置header=None。列名列表中不允许有重复值。
header : 指定第几行是表头,默认会自动推断把第一行作为表头。header =None ,没有表头
sheet_name : 指定Excel文件读取哪个sheet,默认为第一个
comment: 字符串,默认值None。设置注释符号,注释掉行的其余内容。将一个或多个字符串传递给此参数以在输入文件中指示注释。注释字符串与当前行结尾之间的任何数据都将被忽略。
pd.read_excel('data/data.xlsx') # 注意目录层
# 本地绝对路径
pd.read_excel('/user/gairuo/data/data.xlsx')
# 使用URL
pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
# 字符串、整型、列表、None,默认为0
pd.read_excel('tmp.xlsx', sheet_name=1) # 第二个sheet
pd.read_excel('tmp.xlsx', sheet_name='总结表') # 按sheet的名字
# 读取第一个、第二个、名为Sheet5的sheet,返回一个df组成的字典
dfs = pd.read_excel('tmp.xlsx', sheet_name=[0, 1, "Sheet5"])
pd.read_excel('tmp.xlsx', names=['姓名', '年龄', '成绩'])
4、写入 excel
data.to_excel("path+name",sheeet_name,index=true,na_rep="")
path : 文件路径
sheet_name 定Excel文件写入哪个sheet,默认为第一个
index :是否将索引一起导入,一般需要设置为 False
na_rep: 字符串,默认值''(空字符)。缺失值表示方式
不知大家发现没,CSV 和 excel 操作差不多
# 导出,可以指定文件路径
df.to_excel('path_to_file.xlsx')
# 指定sheet名,不要索引
df.to_excel('path_to_file.xlsx', sheet_name='Sheet1', index=False)
5、SQL 读取写入与查询
注意需要安装SQLAlchemy库
from sqlalchemy import create_engine
# 创建数据库对象,SQLite内存模式
engine = create_engine('sqlite:///:memory:')
# 取出表名为data的表数据
with engine.connect() as conn, conn.begin():
data = pd.read_sql_table('data', conn)
# 将数据写入
data.to_sql('data', engine)
# 大量写入
data.to_sql('data_chunked', engine, chunksize=1000)
# 使用SQL查询
pd.read_sql_query('SELECT * FROM data', engine