Jupyter Notebook -- Pandas高级数据处理

Pandas高级处理

一、缺失值处理

1.判断缺失值是否存在

 pd.notnull( )  #缺失值显示false
 pd.isnull( )    #缺失值显示ture
 np.all(pd.notnull(movie))  #有缺失值返回false
 np.any(pd.isnull(movie))  #有缺失值返回true

2.处理缺失值
(1)删除

pandas删除缺失值,使用dropna的前提是,缺失值的类型必须是np.nan

movie.dropna()  # 不修改原数据
data = movie.dropna()  # 可以定义新的变量接受或者用原来的变量名

(2)替换

#按列替换

for i in movie.columns:
    if np.all(pd.notnull(movie[i])) == False:
        print(i)
        movie[i].fillna(movie[i].mean(), inplace=True)

若缺失值表示不是nan则需先替换成nan

wis = wis.replace(to_replace='?', value=np.nan)

二、数据离散化

1.分组

#自动分组
p_counts = pd.cut(data, bins)
#自定义分组
bins = [-100, -7, -5, -3, 0, 3, 5, 7, 100]
p_counts = pd.cut(p_change, bins)

2.one-hot编码

pandas.get_dummies(data, prefix=None)
data: array-like, Series, or DataFrame 
prefix: 分组名字

# 得出one-hot编码矩阵
dummies = pd.get_dummies(p_counts, prefix="rise")

三、合并

1.普通合并

pd.concat([data1, data2], axis=1)
#按照行或列进行合并,axis=0为列索引,axis=1为行索引
2.数据表键值合并

pd.merge(left, right, how=‘inner’, on=None)
可以指定按照两组数据的共同键值对合并或者左右各自
left: DataFrame
right: 另一个DataFrame
on: 指定的共同键
how:按照什么方式连接

四、交叉表与透视表

应用crosstab和pivot_table实现交叉表与透视表
准备两列数据,星期数据以及涨跌幅是好是坏数据
进行交叉表计算

data = pd.read_csv("E:\\stock_day.csv")
# 寻找星期几跟股票张得的关系
# 1、先把对应的日期找到星期几
date = pd.to_datetime(data.index).weekday
data['week'] = date

# 2、假如把p_change按照大小去分个类0为界限
data['posi_neg'] = np.where(data['p_change'] > 0, 1, 0)

# 通过交叉表找寻两列数据的关系
count = pd.crosstab(data['week'], data['posi_neg'])
# 算数运算,先求和
sum = count.sum(axis=1).astype(np.float32)
# 进行相除操作,得出比例
pro = count.div(sum, axis=0)
#使用plot画出这个比例,使用stacked的柱状图
pro.plot(kind='bar', stacked=True)
plt.show()

在这里插入图片描述

五、分组与聚合

应用groupby和聚合函数实现数据的分组与聚合
分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况

DataFrame.groupby(key, as_index=False)
#key:分组的列数据,可以多个
#案例:不同颜色的不同笔的价格数据
# 按照国家分组,求出每个国家的星巴克零售店数量
count=starbucks.groupby(['Country']).count()
# 画图显示结果
count['Brand'].plot(kind='bar', figsize=(20, 8))
plt.show()

在这里插入图片描述

  • 3
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值