Pandas文件读取

简介: Pandas文件读取

1. 文件读取


pandas可以读取的文件格式有很多,这里主要介绍读取csv, excel, txt文件。

df_csv = pd.read_csv('../data/my_csv.csv')
df_csv
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2
2 6 c 2.5 orange 2020/1/5
3 5 d 3.2 lemon 2020/1/7
df_txt = pd.read_table('../data/my_table.txt')
df_txt
col1 col2 col3 col4
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2
2 6 c 2.5 orange 2020/1/5
3 5 d 3.2 lemon 2020/1/7
df_excel = pd.read_excel('../data/my_excel.xlsx')
df_excel
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2
2 6 c 2.5 orange 2020/1/5
3 5 d 3.2 lemon 2020/1/7

这里有一些常用的公共参数,header=None表示第一行不作为列名,index_col表示把某一列或几列作为索引,索引的内容将会在第三章进行详述,usecols表示读取列的集合,默认读取所有的列,parse_dates表示需要转化为时间的列,关于时间序列的有关内容将在第十章讲解,nrows表示读取的数据行数。上面这些参数在上述的三个函数里都可以使用。

pd.read_table('../data/my_table.txt', header=None)
0 1 2 3
0 col1 col2 col3 col4
1 2 a 1.4 apple 2020/1/1
2 3 b 3.4 banana 2020/1/2
3 6 c 2.5 orange 2020/1/5
4 5 d 3.2 lemon 2020/1/7
pd.read_csv('../data/my_csv.csv', index_col=['col1', 'col2'])
col3 col4 col5
col1 col2
2 a 1.4 apple 2020/1/1
3 b 3.4 banana 2020/1/2
6 c 2.5 orange 2020/1/5
5 d 3.2 lemon 2020/1/7
pd.read_table('../data/my_table.txt', usecols=['col1', 'col2'])
col1 col2
0 2 a
1 3 b
2 6 c
3 5 d
pd.read_csv('../data/my_csv.csv', parse_dates=['col5'])
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020-01-01
1 3 b 3.4 banana 2020-01-02
2 6 c 2.5 orange 2020-01-05
3 5 d 3.2 lemon 2020-01-07
pd.read_excel('../data/my_excel.xlsx', nrows=2)
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2

在读取txt文件时,经常遇到分隔符非空格的情况,read_table有一个分割参数sep,它使得用户可以自定义分割符号,进行txt数据的读取。例如,下面的读取的表以||||为分割:

pd.read_table('../data/my_table_special_sep.txt')

|   | col1 |||| col2            | | - | ----------------------------- | | 0 | TS |||| This is an apple. | | 1 | GQ |||| My name is Bob.   | | 2 | WT |||| Well done!        | | 3 | PT |||| May I help you?   |

上面的结果显然不是理想的,这时可以使用sep,同时需要指定引擎为python

pd.read_table('../data/my_table_special_sep.txt', sep=' |||| ', engine='python')
col1 col2
0 TS This is an apple.
1 GQ My name is Bob.
2 WT Well done!
3 PT May I help you?


【WARNING】sep是正则参数


在使用read_table的时候需要注意,参数sep中使用的是正则表达式,因此需要对|进行转义变成|,否则无法读取到正确的结果。有关正则表达式的基本内容可以参考第八章或者其他相关资料。


【END】


2. 数据写入


一般在数据写入中,最常用的操作是把index设置为False,特别当索引没有特殊意义的时候,这样的行为能把索引在保存的时候去除。

df_csv.to_csv('../data/my_csv_saved.csv', index=False)
df_excel.to_excel('../data/my_excel_saved.xlsx', index=False)

pandas中没有定义to_table函数,但是to_csv可以保存为txt文件,并且允许自定义分隔符,常用制表符\t分割:

df_txt.to_csv('../data/my_txt_saved.txt', sep='\t', index=False)

如果想要把表格快速转换为markdownlatex语言,可以使用to_markdownto_latex函数,此处需要安装tabulate包。

print(df_csv.to_markdown())
|    |   col1 | col2   |   col3 | col4   | col5     |
|---:|-------:|:-------|-------:|:-------|:---------|
|  0 |      2 | a      |    1.4 | apple  | 2020/1/1 |
|  1 |      3 | b      |    3.4 | banana | 2020/1/2 |
|  2 |      6 | c      |    2.5 | orange | 2020/1/5 |
|  3 |      5 | d      |    3.2 | lemon  | 2020/1/7 |
print(df_csv.to_latex())
\begin{tabular}{lrlrll}
\toprule
{} &  col1 & col2 &  col3 &    col4 &      col5 \
\midrule
0 &     2 &    a &   1.4 &   apple &  2020/1/1 \
1 &     3 &    b &   3.4 &  banana &  2020/1/2 \
2 &     6 &    c &   2.5 &  orange &  2020/1/5 \
3 &     5 &    d &   3.2 &   lemon &  2020/1/7 \
\bottomrule
\end{tabular}


目录
相关文章
|
测试技术
jmeter性能指标分析
使用jmeter压测后,对各项指标进行分析
1612 0
|
前端开发 Java 数据库连接
JavaWeb:登录注册功能实现
JavaWeb 登录注册是一种常见的网站开发功能,使用 Java 编程语言和 Web 技术来实现用户注册和登录功能
417 3
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
1722 0
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的私家车位共享系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的私家车位共享系统的详细设计和实现
191 0
|
NoSQL Redis 存储
5分钟带你了解Redis 5.0新功能 内含重量级特性解读
Redis是目前最流行的KV缓存数据库,它简单易用,安全稳定,在互联网行业有着非常广泛的应用。
2907 0
|
算法 大数据 API
合约跟单API对接火币/币安/OK交易所一键跟单系统开发策略详细/案例项目/技术分析/代码部署
     量化合约指的是目标或任务具体明确,可以清晰度量。根据不同情况,表现为数量多少,具体的统计数字,范围衡量,时间长度等等。所谓量化就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。经过抽样的图像,只是在空间上被离散成为像素(样本)的阵列。而每个样本灰度值还是一个由无穷多个取值的连续变化量,必须将其转化为有限个离散值,赋予不同码字才能真正成为数字图像。这种转化称为量化。
Py之scorecardpy:scorecardpy的简介、安装、使用方法之详细攻略
Py之scorecardpy:scorecardpy的简介、安装、使用方法之详细攻略
Py之scorecardpy:scorecardpy的简介、安装、使用方法之详细攻略
|
Web App开发 黑灰产治理 CDN
压箱底!8个珍藏多年的Chrome插件高速下载网站
Chrome插件以轻量化、使用方便倍受欢迎,我之前也曾经很多篇文章介绍过不少好用的Chrome插件。其中,不乏一些名气很大、功能很强的插件。
压箱底!8个珍藏多年的Chrome插件高速下载网站
|
人工智能 移动开发 自然语言处理
天猫精灵AliGenie-技能开发体验
以往,对于天猫精灵的理解,更多的是居于方糖音响产品。然而,它的语音交互功能才是王炸,尤其是在可以自定义交互语言的情况下!以下便是基于开发者平台展示的简单操作,此次展示的是作为个人使用,因此完全可以零基础操作。
1577 0
天猫精灵AliGenie-技能开发体验
下一篇
oss云网关配置