作者:杨士锦 周岩 书生
编者按
当我们开始着手做一个数据分析项目时,选择和导入数据集是第一个步骤,而导出数据虽然非必需,但有时候我们也需要保存处理或者分析后的结果,方便下次使用。在pandas中,它已经为我们提供了很多不同格式数据的导入和导出方法,下面这篇文章将具体介绍一些较为常用的方法,包括excel、csv文件以及数据库的导入导出等。
数据导入和导出是pandas中很基础且重要的一个部分。pandas提供了很多不同格式数据的导入和导出方法,可以将其他格式数据转为DataFrame格式。我们可以将list、dict格式数据转为DataFrame格式,也可以从本地的csv、json等文本格式数据和sql、MongoDB等数据库中读取和保存数据等等。下面就分别以三大类介绍一些常见的数据格式的导入与导出。
下文中所有的示例代码都是在jupyter notebook中创作,还不太了解jupyter的小伙伴,可以先看看这篇文章哦:数据科学 | 始于Jupyter Notebooks:一份全面的初学者使用指南。
1 list、dict、np.array 格式数据
1.1 list
一般读取一个list,生成的结果如下:
运行结果:
如果读取的list中的每个元素都是一个元组,会发生什么呢?
运行结果:
如果忽略columns的话,第二个list的值不是列名,而是默认生成索引名,如下:
运行结果:
1.2 dict
这里我们以一个字典为数据,看下不同操作的结果有何不同。
直接调用DataFrame进行读取的话,生成的DataFrame结构如下:
运行结果:
需要说明的是:from_dict这个方法只有在pandas 0.23版本后才有,如果在早期的版本如0.19中调用会出现报错。
如果我们想以a,b作为索引,以list中的每个值分别为一列怎么操作呢?
运行结果:
如果进一步想让a、b生成列的话,调用reset_index方法即可。
运行结果:
但是如果我们想把字典的key和value分别生成两列,如何操作呢?
一种方法是:
还有一种方法依然是利用from_dict,不过就需要将value中的list提前转化成字符串,然后再进行操作即可。
1.3 np.array
numpy是比pandas更底层一些的数据操作工具,pandas的很多操作也是基于numpy进行的,比如numpy就支持直接读取txt文件。比如有这样一个txt文件:
一共有4行8列的数据,数据间用空格隔开,表头带有%,那么读取的时候可以用loadtxt函数进行导入:
运行结果:
可以看到数据自动剔除了表头,并且只用了其中指定的列。接下来就可以将array导入到pandas中:
我们就可以得到类似用list构建DataFrame的效果了:
1.4 其他方式
当然需要导入文本并不规则的时候,可以考虑直接利用python中的文件读取来一行一行的读取文件,然后利用json或者re等字符串处理包来处理数据,最后整合成DataFrame:
当然这个方法要结合具体的数据来看,这里就不展开介绍了。
2 文本格式数据
2.1 CSV文件
2.1.1 导入csv数据
常用参数解析:
● filepath_or buffer: str, path object or file-like object。指定传入的文件路径,必须传入的参数。
● sep: str。指定分隔符,默认是逗号分隔符。
● header: int, list or