python的pandas包,pandas如何读取格式化数据?
发布于 作者:苏南大叔 来源:程序如此灵动~python
当然可以使用传统的open
语句来读取一个文件,但是在现在的科学时代,不使用点高大上的库就显得那么跟不上时代。比如:苏南大叔的读取三元组数据文本的任务。其实也可以使用pandas
这个库来读取。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和各种编程代码的事情。本文讲述python
数据处理的工具pandas
的基本使用问题。本文测试环境:python@3.6.8
,pandas@1.1.5
。另外悄悄的说一句:pandas
和我们的国宝熊猫到底是啥关系呢?
什么是pandas
Pandas
是基于NumPy
的一种工具,该工具是为了解决数据分析任务而创建的。Pandas
纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas
的主要数据结构是Series
(一维数据)与DataFrame
(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。
pandas
的官方网站:
虽然用了很久这个库了,但是真心是没访问过它的官网。而且,不仅python
里面有pandas
,R
语言里面也有pandas
。
查看pandas
版本
想要使用pandas
,首先就要使用pip
安装pandas
,执行命令:
pip install pandas
如果想要查看已经安装好的pandas
版本的话,可以执行:
pip list | grep pandas
相关连接:
read_table
这里用于读取特殊格式化后的文本数据,比如csv
数据等等,只要文本数据符合类似table
形状的数据,各行之间是换行分割,各列之间使用某个字符进行分割的就行。比如:苏南大叔要处理的知识图谱三元组数据。
本文范例中,知识图谱的三元组数据共分为三列,第一列和第三列都是实体,中间一列是关系(属性),数据之间使用/t
分割。使用pandas
的read_table
函数的话,需要指定分隔符decimal
,还需要给每列起个合适的名字names`。这里知识图谱的三元组数据有三列,所以第三个参数是个对应数量的数组。
import pandas as pd
data = pd.read_table("test2.txt", decimal="\t", names=["entity_1", "role", "entity_2"])
pd
数据总览
查看总体信息:
data.info()
返回数据类似如下:
RangeIndex: 83207 entries, 0 to 83206
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 entity_1 83207 non-null object
1 role 83207 non-null object
2 entity_2 83207 non-null object
dtypes: object(3)
memory usage: 1.9+ MB
None
显示共有三列数据,分别是:entity_1
/role
/entity_2
,每列有83207条数据。
pd数据范例
查看范例数据:
data.head()
# data.head(20)
就是展示一下前几条数据,不传数量的话,就显示5条,传递个数量的话,就显示对应条数的数据。显示出来的数据和在文本中很不一样,有点像文本放在excel
里面的感觉。
pd数据类型
查看类型:
type(data) # <class 'pandas.core.frame.DataFrame'>
type(data['entity_1']) # <class 'pandas.core.series.Series'>
这个类型的显示,可以印证开篇的描述,DataFrame
类似二维数组,Series
类似一维数组。
列名数据遍历
for index, row in data.iteritems():
print(index) # 输出列名
Series数据遍历
pandas
的数据,需要先把Series
转换为list
,才能进行遍历。代码如下:
entity_1_list = data['entity_start'].tolist()
for item in entity_1_list :
print(item) ## 宝岛
当然,还有别的遍历方式,这里仅仅是列出其中一种罢了。别把这里的代码当成唯一标准答案。
参考文献
更多更全面的说明,还是要看官方文档。
总结
在R
语言里面,也有非常非常类似的pandas
可以使用。苏南大叔也会后续更新pandas
系列文章。敬请期待!
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。