目录
Pandas常用数据类型
Series的使用
为Series指定索引值
通过字典创建Series
更改dtype
切片和索引
DataFrame的使用
DataFrame基础属性
排序
选择
缺失数据的处理
处理方式
import pandas as pd
1.Series一维,带标签数组(即索引,第一列为索引,第二列为数据)
Series对象本质上由两个数组构成,一个数组构成对象的键(index索引),一个数组构成对象的值(values),键->值
2.DataFrame二维,Series容器
t = pd.Series([1,2,31,12,3,4]) ''' 0 1 1 2 2 31 3 12 4 3 5 4 dtype: int64 ''' print(type(t)) # <class 'pandas.core.series.Series'>
t2 = pd.Series([1,23,2,2,1], index = list("abcde"))
a 1
b 23
c 2
d 2
e 1
dtype: int64
temp_dict = {"name":"xiaoming","age":30,"tell":10086} t3 = pd.Series(temp_dict) print(t3) ''' name xiaoming age 30 tell 10086 dtype: object '''
t2.astype(float)
a 1.0
b 23.0
c 2.0
d 2.0
e 1.0
dtype: float64
可以像字典一样直接用key或索引取值
切片:直接传入start end 或者步长即可
索引:一个的时候直接传入序号或者index,多个的时候传入序号或index列表
t3[0] #'xiaoming'
t3["age"] #30
t3[["age","tell"]]
age 30
tell 10086
dtype: object
还可以通过布尔索引来判断值取出:
t[t>4]
2 31
3 12
dtype: int64
import pandas as pd
import numpy as np
pd.DataFrame(np.arange(12).reshape(3,4))
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
DataFrame既有行索引又有列索引:
行索引:横向,index,0轴,axis=0
列索引:纵向,columns,1轴,axis=1
t1 = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("WXYZ"))
W X Y Z
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
可以分别对index和columns切片或索引取值
df.shape #行数,列数 df.dtypes #列数据类型 df.ndim #数据维度 df.index #行索引 df.columns #列索引 df.vaues #对象值,ndarray数组 df.head(3) #显示头部几行,默认5行 df.tail(3) #显示尾部几行,默认5行 df.info #相关信息预览:行数,列数,列索引,列非空值个数,行类型,列类型,内存占用 df.describe() #快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值
t1_sorted = t1.sort_values(by = "W")
通过标签进行获取:loc
t1.loc["a","Z"] # 3
t1.loc["a"]
W 0
X 1
Y 2
Z 3
Name: a, dtype: int32t1.loc[["a","b"],["W","Z"]]
W Z
a 0 3
b 4 7t1.loc["a":"c",:] # 注意loc中的冒号是闭合区间
W X Y Z
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
通过位置进行获取:iloc
t1.iloc[0]
W 0
X 1
Y 2
Z 3
Name: a, dtype: int32t1.iloc[:,0]
a 0
b 4
c 8
Name: W, dtype: int32
同样也可以使用布尔索引
&且 |或
判断数据是否为NaN:pd.isnull(xxx)或pd.notnull(xxx)
其中,在删除nan所在行列时,how为any代表只要有nan就都删,或者all为全部是nan时才删;inplace代表是否原地替换该DataFrame