Pandas 概述
Pandas 包含的数据结构和数据处理工具的设计使得在Python中进行数据清洗和分析非常快捷,Pandas经常和其他数值工具一起使用比如Numpy和Scipy,以及数据可视化工具matplotlib一起使用。
尽管Pandas采用了很多Numpy的代码风格,但最大的不同在于Pandas 是用来处理表格型或异质型数据的吗,而Numpy则相反,它更适合用来处理同质型的数值类数据。
在下面的介绍中我们会用下面的方式去引入Pandas:
In [1]: import pandas as pd
Pandas 数据结构介绍
要使用Pandas,你首先就得熟悉它的两个主要数据结构:Series和DataFrame。虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。
在上一篇中,我们介绍了Series,那么在这一篇中我们将着重介绍DataFrame.
DataFrame之一
DataFrame是一个表格型的数据结构(或者理解为表示的是矩阵的数据表),它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。
构建DataFrame的方式
1.利用包含等长度列表或者Numpy数组的字典来构建
In[2]: data = {'fruits':['apple','banana','orange'],'price':[2,3,5]}
In[3]: frame =pd.DataFrame(data)
In[4]: frame
out[4]: fruits price
0 apple 2
1 banana 3
2 orange 5
In[5]:frame.head()
out[5]: fruits price
0 apple 2
1 banana 3
2 orange 5
3 pear 1
4 berry 4
可以看到head()方法只显示前五行。
我们在上一篇文章中提到Series可以指定顺序,那么在DataFrame的结构中是否也可以指定顺序呢?答案是肯定的。
In[6]: pd.DataFrame(data,columns=['price','fruits'])
out[6]: price fruits
0 2 apple
1 3 banana
2 5 orange
3 1 pear
4 4 berry
5 6 watermelon
6 7 muskmelon
同样,在Series的结构中,如果我们指定的列没有包含在数据中,会出现缺失值。那么在DataFrame这个结构中,如果我们指定的列没有包含在数据中,也会出现缺失值,同样也是用NaN来表示。
In[7]:frame2=pd.DataFrame(data,columns=['price','fruits','discount'])
out[7]:
price fruits discount
0 2 apple NaN
1 3 banana NaN
2 5 orange NaN
3 1 pear NaN
4 4 berry NaN
5 6 watermelon NaN
6 7 muskmelon NaN
列的引用是可以修改的,例如,我们把刚才创建的列discount修改成0.8.
In[8]:frame2['discount'] = 0.8
In[9]: frame2
out[9]:
price fruits discount
0 2 apple 0.8
1 3 banana 0.8
2 5 orange 0.8
3 1 pear 0.8
4 4 berry 0.8
5 6 watermelon 0.8
6 7 muskmelon 0.8
del 关键字可以删除列,我们把刚才创建的discount删除
In[8]:del frame2['discount']
In[9]:frame2
out[9]: price fruits
0 2 apple
1 3 banana
2 5 orange
3 1 pear
4 4 berry
5 6 watermelon
6 7 muskmelon
我们还可以对DataFrame进行装置。
In[10]:frame2.T
out[10]:
0 1 2 3 4 5 6
price 2 3 5 1 4 6 7
fruits apple banana orange pear berry watermelon muskmelon
这些操作是不是很像我们的矩阵的操作?
DataFrame也有values属性
In[11]: frame2.values
out[11]:array([['apple', 2],
['banana', 3],
['orange', 5],
['pear', 1],
['berry', 4],
['watermelon', 6],
['muskmelon', 7]], dtype=object)
关注公众号“神经网络与深度学习”获取更多精彩内容!