import pandas as pd
#导入pandas
print(pd.__version__)
#查看pandas版本信息
pandas的数据结构可以分为:
Series
(一维数组)
#一维带标签的数组,可以通过标签定位数据。
#可以看作是一列数据组成的数据集DataFrame
(二维数组)
#二维带标签的数组,可以通过标签定位数据。Panel
(三维数组)Panel4D
(四维数组)panelND
(多维数组)
series
可以看作是一列数据组成的数据集
创建series数据类型
s=pd.Series(data,index=index)
- 从列表创建Series
import pandas as pd
list1=[0,1,2,3,4]
s1=pd.Series(list)
- 若不指定索引
index
,默认从0开始
- 从Ndarray创建Series
import numpy as np
import pandas as pd
data=np.random.randn(5) #一行五列的array
index1=['a','b','c','d','e']
s2=pd.Series(data,index=index1)
np.random
是numpy中的一个模块(https://blog.csdn.net/u012149181/article/details/78913167)
np.random.rand(size)
#size=d1,d2,…,dn
#生成一个n维的array(数据在**[0,1)**之间)np.random.randn(d1,d2,…,dn)
#生成一个n维的array(数据具有标准正态分布)
- 从字典创建Series
import numpy as np
import pandas as pd
dic={'a':1,'b':2,'c':3,'d':4,'e':5}
s3=dp.Series(dic)
从字典创建Series,就不需要index了
Series基本操作
- 修改Series索引
series1.index=['index1','index2',···]
- 纵向拼接
series3=series2.append(series1)
#将s1拼接到s2 - 按照索引删除元素
series1=series1.drop('index')
- 修改指定索引的元素
series1['index']=
- 按索引查找元素
series1['index']
- 切片
series[a:b]
Series运算
加法 | 减法 | 乘法 | 除法 | 求中位数 | 求和 | 求最大值 | 求最小值 |
---|---|---|---|---|---|---|---|
s2.add(s1) | s2.sub(s1) | s2.mul(s1) | s2.div(s1) | s3.median() | s3.sum() | s3.max() | s3.min() |
DataFrame
在索引和数据的基础上,又增加了列名
创建DataFrame数据类型
df1=pd.DataFrame(data,index,columns)
df1.dtypes
2. 从Ndarray创建DataFrame
import numpy as np
import pandas as pd
n_arr=np.random.randn(6,4) #五行四列的array
dates=pd.date_range('today',period=6) #定义时间序列作为index
columns=['a','b','c','d'] #将列表作为列名
df1=pd.DataFrame(n_arr,index=dates,columns=columns)
- 从字典创建DataFrame
import numpy as np
import pandas as pd
dic={'animal':['cat','dog','cat','cat'],'age':[1,3,5,2],'visits':[1,3,2,1],'priority':['yes','yes','no','no']}
labels=['a','b','c','d']
df1=dp.DataFrame(dic,index=labels)
从字典创建DataFrame,需要index,但是不需要Column了
DataFrame基本操作
-
预览前5行
df1.head(num)
#num为预览的行数,不填默认前5行 -
查看后3行
df1.tail(3)
-
查看索引
df1.index
-
查看列名
df1.columns
-
查看数值
df1.values
-
查看统计数据
df1.describe()
-
转置
df1.T
-
按列排序
df1.sort_values(by='age')
-
切片
df1[a:b:c]
-
通过标签查询(单列)
df1['column']
-
通过标签查询(多列)
df1[['column1','column2']]
-
通过位置查询
df1.iloc[a:b]
#包前不包后的行数 -
副本拷贝
-
判断元素是否为空
-
添加列数据