第16天pandas的基本功能(一)
灵活的二进制操作
-
体现在2个方面
支持一维和二维之间的广播
支持缺失值数据处理
-
四则运算支持广播
+add - sub *mul /div
-
divmod()分区和模运算(返回商和余数2个结果)
案例:a,b=divmod(一维矩阵)
-
空值处理
矩阵中空值用NaN代替
NaN+值=NaN
np(numpy).nan表示空值
填充空值: fillna(value=值)
-
np.nan == np.nan 结果为False
如果a矩阵和b矩阵中有空值 那么 a == b 结果:False
相同:a.equal(b )结果为:True.带空的矩阵比较推荐使用equal
-
组合
-
从df2中把df1的数据不全
df1.combine_first(df2)
-
连接
-
连接二维矩阵
df1.concat(df2,axis=0/1)
-
连接一维矩阵
pd.concat([df1,df2])
-
一维二维通用
df1.append(df2)
-
-
-
统计
-
所有统计函数都支持行或列~~~
sum(0/1) mean(0/1)
-
统计函数
功能 描述 count
非NA观测数量 sum
价值总和 mean
价值的平均值 mad
平均绝对偏差 median
算术值的中值 min
最低限度 max
最大值 mode
模式 abs
绝对值 prod
价值的产物 std
贝塞尔校正的样本标准偏差 var
无偏差 sem
平均值的标准误差 skew
样本偏斜(第3时刻) kurt
样本峰度(第4个时刻) quantile
样本分位数(值为%) cumsum
累计金额 cumprod
累积产品 cummax
累积最大值 cummin
累积最小值
-
统计函数,统计的时候自动跳过空值
len(数组)获取行数,包括Nan所在的行~~~count(不包括)
-
include
#可以指定摘要统计的东西
矩阵.describe(include=['object'])
矩阵.describe(include=['number'])
-
最大最小索引
-
最大数和最小数对应的索引位置
最大 矩阵.idxmax(axis=0/1)
最小 矩阵 .idxmin(axis=0/1)
-
-
最常出现值模式
a.value_counts() 统计一维数组中每个元素出现的次数
a.mode()统计数组中出现次数最多的值
-
分段/面元
-
cut和qcut
-
共同点
都可以分为好多份 pd.cut/qcut(df,4) qcut 是对等的 cut 是随机的
-
不同点
pd.cut(df,[数组]) qcut不支持
-
语法 pd.cut(df,[切点列表],right=True/False)
示列
#分2组 大于18的为成年,小于18的为未成年,统计个数
a = pd.Series([4,5,5,2,3,1,8,9,3,15,6,45,56,1,56,2,20,4,5,2,1,8,18,1,82,20,25,20,20,12,13,14])
b = pd.cut(a,[0,18,100],labels=['未成年','成年'],right=False)
b.value_counts()
-
-
-
为矩阵添加处理函数/支持多个函数
-
链式写法
(df.pipe(函数名,参数).pipe(函数名,参数).......)
-
apply
-
df.apply(函数名,axis=0/1) 为当前行或列添加处理函数
示列
#12.判断年龄是否成年: 18岁以上成年 #成年和未成年获救比例
"""
1.判断是否成年
2.
"""
def age_old(b):
c = b['Age']
if c > 18:
return '成年'
elif c < 18:
return '未成年'
else:
return '空值'
#创建新列
df['chegnnian'] = df.apply(age_old,axis=1)
#设置全家的汉子显示
plt.rcParams['font.size'] = 15
h_j = df.groupby(by=['Survived','chegnnian']).size()
plt.pie(h_j,labels=['成年未获救','未成年未获救','空值未获救','成年获救','未成年获救','空值获救'],shadow=True,autopct='%1.1f%%')
plt.axis('equal') #设置圆的形状 正圆
plt.show()
-
-
map
-
df.applymap == df.map()
-
示列
#10. 以下肉类数据源,food都转换为小写,添加一个动物列,而且字符串都是小写
data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon','Pastrami', 'corned beef', 'Bacon','pastrami', 'honey ham', 'nova lox'],
'price': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})
data['food'].str.lower()
#新列: 动物列
animal = { 'bacon': 'Pig', 'pulled pork': 'pIg', 'pastrami': 'cOw', 'corned beef': 'Co', 'honey Ham': 'pig', 'nova lox': 'Salmon' }
x = data['food'].map(animal)
data['animal'] = x
data
-
-
-