【Pandas 数据分析3-2】Pandas 数据读取与输出 - Excel

7 篇文章 0 订阅
7 篇文章 0 订阅

目录

3.3 读取Excel

3.3.1 语法

3.3.2 文件内容

3.3.3 表格

3.3.4 表头

3.3.5 列名

3.3.6 其他

3.4 数据输出

3.4.1 CSV

3.4.2 Excel

3.4.3 HTML

3.4.4 数据库(SQL)

3.4.5 Markdown


3.3 读取Excel

3.3.1 语法

pandas.read_excel接口的语法如下:

pd.read_excel(io, sheet_name=0, header=0,
              names=None, index_col=None,
              usecols=None, squeeze=False,
              dtype=None, engine=None,
              converters=None, true_values=None,
              false_values=None, skiprows=None,
              nrows=None, na_values=None,
              keep_default_na=True, verbose=False,
              parse_dates=False, date_parser=None,
              thousands=None, comment=None, skipfooter=0,
              convert_float=True, mangle_dupe_cols=True, **kwds)

3.3.2 文件内容

o为第一个参数,没有默认值,也不能为空,根据Python的语法,第一个参数传参时可以不写。可以传入本地文件名或者远程文件的URL:

# 字符串、字节、Excel文件、xlrd.Book实例、路径对象或者类似文件的对象
# 本地相对路径
pd.read_excel('data/data.xlsx') # 注意目录层级
pd.read_excel('data.xls') # 如果文件与代码文件在同一目录下
# 本地绝对路径
pd.read_excel('/user/gairuo/data/data.xlsx')
# 使用URL
pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')

与read_csv一样,需要注意,Mac和Windows中的路径写法不一样。

3.3.3 表格

sheet_name可以指定Excel文件读取哪个sheet,如果不指定,默认读取第一个。

# 字符串、整型、列表、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"])
dfs = pd.read_excel('tmp.xlsx', sheet_name=None) # 所有sheet
dfs['Sheet5'] # 读取时按sheet名

3.3.4 表头

数据的表头参数为header,如不指定,默认为第一行。

# 整型、整型组成的列表,默认为 0
pd.read_excel('tmp.xlsx', header=None)  # 不设表头
pd.read_excel('tmp.xlsx', header=2)  # 第三行为表头
pd.read_excel('tmp.xlsx', header=[0, 1])  # 两层表头,多层索引

3.3.5 列名

用names指定列名,也就是表头的名称,如不指定,默认为表头的名称。

# 序列,默认为None
pd.read_excel('tmp.xlsx', names=['姓名', '年龄', '成绩'])
pd.read_excel('tmp.xlsx', names=c_list) # 传入列表变量
# 没有表头,需要设置为None
pd.read_excel('tmp.xlsx', header=None, names=None)

3.3.6 其他

 其他参数与pandas.read_csv的同名参数功能一致,如果想使用仅pandas.read_csv有的参数,可以考虑将数据保存为CSV文件,因为CSV文件相对通用、读取数据快且处理方法比较丰富。

3.4 数据输出

3.4.1 CSV

DataFrame.to_csv方法可以将DataFrame导出为CSV格式的文件,需要传入一个CSV文件名。

df.to_csv('done.csv')
df.to_csv('data/done.csv') # 可以指定文件目录路径
df.to_csv('done.csv', index=False) # 不要索引

另外还可以使用sep参数指定分隔符,columns传入一个序列指定列名,编码用encoding传入。如果不需要表头,可以将header设为False。如果文件较大,可以使用compression进行压缩:

# 创建一个包含out.csv的压缩文件out.zip
compression_opts = dict(method='zip',
                        archive_name='out.csv')
df.to_csv('out.zip', index=False,
          compression=compression_opts)

3.4.2 Excel

将DataFrame导出为Excel格式也很方便,使用DataFrame.to_excel方法即可。要想把DataFrame对象导出,首先要指定一个文件名,这个文件名必须以.xlsx或.xls为扩展名,生成的文件标签名也可以用sheet_name指定。

如果要导出多个DataFrame到一个Excel,可以借助ExcelWriter对象来实现。

# 导出,可以指定文件路径
df.to_excel('path_to_file.xlsx')
# 指定sheet名,不要索引
df.to_excel('path_to_file.xlsx', sheet_name='Sheet1', index=False)
# 指定索引名,不合并单元格
df.to_excel('path_to_file.xlsx', index_label='label', merge_cells=False)

多个数据的导出如下:

# 将多个df分不同sheet导入一个Excel文件中
with pd.ExcelWriter('path_to_file.xlsx') as writer:
    df1.to_excel(writer, sheet_name='Sheet1')
    df2.to_excel(writer, sheet_name='Sheet2')

使用指定的Excel导出引擎如下:

# 指定操作引擎
df.to_excel('path_to_file.xlsx', sheet_name='Sheet1', engine='xlsxwriter')
# 在'engine'参数中设置ExcelWriter使用的引擎
writer = pd.ExcelWriter('path_to_file.xlsx', engine='xlsxwriter')
df.to_excel(writer)
writer.save()

# 设置系统引擎
from pandas import options  # noqa: E402
options.io.excel.xlsx.writer = 'xlsxwriter'
df.to_excel('path_to_file.xlsx', sheet_name='Sheet1')

3.4.3 HTML

DataFrame.to_html会将DataFrame中的数据组装在HTML代码的table标签中,输入一个字符串,这部分HTML代码可以放在网页中进行展示,也可以作为邮件正文。

print(df.to_html())
print(df.to_html(columns=[0])) # 输出指定列
print(df.to_html(bold_rows=False)) # 表头不加粗
# 表格指定样式,支持多个
print(df.to_html(classes=['class1', 'class2']))

3.4.4 数据库(SQL)

将DataFrame中的数据保存到数据库的对应表中:

# 需要安装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
# 将数据写入
data.to_sql('data', engine)
# 大量写入
data.to_sql('data_chunked', engine, chunksize=1000)
# 使用SQL查询
pd.read_sql_query('SELECT * FROM data', engine)

3.4.5 Markdown

Markdown是一种常用的技术文档编写语言,Pandas支持输出Markdown格式的字符串,如下:

print(cdf.to_markdown())

'''
|    |   x |   y |   z |
|:---|----:|----:|----:|
| a  |   1 |   2 |   3 |
| b  |   4 |   5 |   6 |
| c  |   7 |   8 |   9 |
'''

—————————————————————————————————————

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值