1. 引子
周末在家没事做,翻墙逛Medium(国外版简书)的时候,看到有篇文章介绍Python能做什么 ,该文的内容以前在知乎上也看到有人翻译过,感兴趣的可以在知乎上搜一下。另外,作者文中还介绍它录的Python视频,链接为:https://youtu.be/a9UrKTVEeZA。视频内容主要是关于Anaconda3
和Jupyter NoteBook
等python数据可视化环境的搭建。照着视频搭建好环境后,正好看会《利用Python进行数据分析》一书学习一番。
1. 数据结构
在使用pandas之前,先熟悉一下它的两个主要数据结构:Series和DataFrame。
1.1 Series
首先引入pandas和Series
import pandas as pd
from pandas import Series
Series是一种类似于一维数组的对象,它由一组数据和对应的索引组成,示例如下:
obj = Series([4,7,-5,3]) // 定义一个obj对象
如果输出obj对象,打印如下:
Out[4]:
0 4
1 7
2 -5
3 3
左边打印出索引,右边是数值。
1.1.1 values和index属性
另外还可以通过Series的values和index属性获取其数组表示形式和索引对象。
输入:
obj.values
输出:
array([ 4, 7, -5, 3], dtype=int64)
输入:
obj.index
输出:
RangeIndex(start=0, stop=4, step=1)
1.1.2 指定索引
-
如果不想使用默认从0开始递增的索引,而是用其他索引,如a,b,c,d之类的。
输入:
obj2= Series([4,7,-5,3],index=['d','b','a','c'])
obj2
输出如下:d 4 b 7 a -5 c 3
-
指定了索引后,就可以通过索引获取指定的元素。
如输入:
obj2['a']
输出-5。
-
Series对象还支持和
Numpy
一样的数组运算。输入:
obj2 *2
输出:
d 8 b 14 a -10 c 6
-
还可以将Series看成是一个定长的有序词典。
判断b是否是Series中的一个索引:
'b' in obj2
输出:True
也可以通过通过字典来创建Series。
输入:
data = {'a':1,'b':2,'c':3}
obj3 = Series(data)
输出obj3
为:
a 1
b 2
c 3
-
还可以同时指定字典和索引来创建Series
输入:
data = {'a':1,'b':2,'c':3} states = ['b','c','d','a'] obj4 = Series(data,index=states)
这里注意新指定的索引顺序和字典中指定的索引顺序不同,最终结果以index属性中指定的索引顺序为准,输出
obj4
如下:b 2.0 c 3.0 d NaN a 1.0
这里看到,由于索引d本身并不存在于字典中,所以这里对应值为
NaN
。pandas中的
isnull
和notnull
函数可用于检测缺失数据。如输入:
pd.isnull(obj4)
输出:
b False c False d True a False
-
Series自动对齐
Series索引提供了相同索引的自动对齐功能。
如输入:
obj5= Series([4,7,-5,3],index=['d','b','a','c']) obj6= Series([2,3,1,2],index=['d','b','a','c']) obj7 = obj5 + obj6
最终输出
obj7
会将相同索引的元素相加得到新的数组:d 6 b 10 a -4 c 5
-
Series对象和索引的name属性
设置Series对象和索引的name属性:
obj7.name='population' obj7.index.name='state'
输出
obj7
:state d 6 b 10 a -4 c 5 Name: population, dtype: int64
1.2 DataFrame
前面说Series是一种类似于一维数组的对象,那么DataFrame
则是类似于二维数组的对象。
网友评论