pandas所包含的数据结构和数据处理工具的设计使得Python在进行数据清洗和分析非常快捷。
一、pandas数据结构介绍
1、Series
- Series是一种以为的数组型对象,包含了一个值序列,也包含了数据标签。索引在左边,值在右边
import pandas as pd
obj = pd.Series([2,4,6,1,4,5])
print(obj)
Output:0 2
1 4
2 6
3 1
4 4
5 5
dtype: int64
- 可以通过values属性和index属性分别获得Series对象的值和索引
import pandas as pd
obj = pd.Series([2,4,6,1,4,5])
print(obj.values)
print(obj.index)
Output:[2 4 6 1 4 5]
RangeIndex(start=0, stop=6, step=1)
- 可以创建索引
import pandas as pd
obj = pd.Series([2,4,6,1,4,5], index = ['a','b','c','d','e','f'])
print(obj)
Output:a 2
b 4
c 6
d 1
e 4
f 5
dtype: int64
- 与NumPy相比,可以通过使用标签进行索引
import pandas as pd
obj = pd.Series([2,4,6,1,4,5], index = ['a','b','c','d','e','f'])
print(obj['d'])
Output:1
- 值NaN的意思是not a number,这是pandas中标记缺失值或NA的方式
- Series对象自身和其索引都有name的属性
- Series的索引可以按位置赋值的方式进行改变
import pandas as pd
stata = ['ss','sfd','sfs','df','ada']
index = [1,2,3,4,5]
obj = pd.Series(stata,index)
obj.index = [100,98,95,92,90]
print(obj)
Output:100 ss
98 sfd
95 sfs
92 df
90 ada
dtype: object
2、 DataFrame
- DataFrame表示的是矩阵的数据表,包含已排序的列集合,每一列都可以是不同的值类型
- 有多种方式可以构建DataFrame,其中最常用的是利用包含等长度列表或Numpy数组的字典来形成DataFrame
import pandas as pd
data={
'state':["ooo","hhh","xxx"],
'year':[2000,2001,2002],
'pop':[1.1,1.2,1.3]}
frame = pd.DataFrame(data)
print(frame)
Output:
state year pop
0 ooo 2000 1.1
1 hhh 2001 1.2
2 xxx 2002 1.3
- head()方法会只选出头部的五行
- 如果你指定了列的顺序,DataFrame的列会按照制定顺序进行排列
frame1 = pd.DataFrame(data,columns=['year','state','pop'])
print(frame1)
Output:
year state pop
0 2000 ooo 1.1
1 2001 hhh 1.2
2 2002 xxx 1.3
- 可以自己添加索引
frame2 = pd.DataFrame(data,columns=['year','state','pop'],index=['one','two','three'])
print(frame2)
Output:
year state pop
one 2000 ooo 1.1
two 2001 hhh 1.2
three 2002 xxx 1.3
- 可以只选出某一列或者某一行
#输出某一列
print(frame2['year'])
print(frame2.year)
#输出某一行
print(frame2.loc['three'])
Output:
one 2000
two 2001
three 2002
Name: year, dtype: int64
year 2002
state xxx
pop 1.3
Name: three, dtype: object
- 列的引用是可以修改的,可以赋值为标量值或值数组
frame2['debt'] = np.arange(3)
print(frame2)
Output:
year state pop debt
one 2000 ooo 1.1 0
two 2001 hhh 1.2 1
three 2002 xxx 1.3 2
- 使用关键字del来删除列
del frame2['debt']
print(frame2.columns)
Output:Index([‘year’, ‘state’, ‘pop’], dtype=‘object’)
3、 索引对象
- pandas中的索引对象是用于存储轴标签和其他元数据的。在构造Series或DataFrame时,你所使用的任意数组或标签序列都可以在内部转换为索引对象
- 与python集合不同的是,pandas索引对象可以包含重复的标签。根据重复标签进行筛选,会选取所有重复标签对应的数据
- 一些索引对象的方法和属性
二、 基本功能
1、 重建索引
- reindex是一个重要的方法可以创建一个符合新索引的新对象
import pandas as pd
obj = pd.Series([1,2,4,5],index=['a','b','c','d'])
print(obj)
obj1 = obj.reindex(['A',