python groupby用法_Python数据分析黑色星期五-知识点整理

1.把数据放在dataframe
df = pd.read_csv('路径')
2.查阅dataframe的信息:http://df.info()
3.查看df的前5
df.head(5)
4.查看哪里有空值
df.isna().any()
5.输出某列中去重后的值
print (df['Product_Category'].unique())

  • 切忌,unique()是函数,前面需要加.


6.数据清洗:替换原来的控制
df.fillna(value=0,inplace=True)

  • Ture = 直接修改原对象
  • False = 新建副本保存(默认)

关于fillna()函数的解释:https://blog.csdn.net/weixin_39549734/article/details/81221276
7.删除不需要的列:
df. drop(columns=["User_ID","Product_ID"],inplace=True)
(因为"User_ID","Product_ID"是列,如果单独dataframe的话,他们就是一个一维结构的数据集,Series;相对应二维数据的数据集是Dataframe)
8.数据可视化:seaborn和matplotlibhttps://www.jianshu.com/p/4b925654f506

  • Matplotlib 要求原始数据的输入类型为 Numpy 数组
  • Seaborn 要求原始数据的输入类型为 pandas 的 Dataframe 或 Numpy 数组

import seaborn as sns
sns.countplot(df['Gender'])也可以写成: sns.countplot(df.Gender)
9.seaborn中的countplot的hue参数,可以通过控制hue参数,来更细分数据
关于countplot的用法:

  • http://seaborn.pydata.org/generated/seaborn.countplot.html?highlight=countplot#seaborn.countplot
  • https://blog.csdn.net/qixizhuang/article/details/85093544
  • https://segmentfault.com/a/1190000015310299

sns.countplot(df['Age'],hue=df['Gender'])
10.理解pandas中的apply()函数 和 python的lambda函数%s %的用法

  • 理解apply():
    • http://www.cnblogs.com/wuzhiblog/p/python_new_row_or_col.html
    • https://www.jianshu.com/p/84bed15e9e6b
  • 理解lambda() :
    • https://www.cnblogs.com/hf8051/p/8085424.html
  • 理解%s %
    • https://www.cnblogs.com/wh-ff-ly520/p/9390855.html


简单来说,

  • 对于apply():
    • 这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据。
    • 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数
    • 会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。
  • 对于lambda:其中的 x 是作为一个像for遍历里面的 i
    • add = lambda x, y : x+y
      • add(1,2) # 结果为3
    • 需求:将列表中的元素按照绝对值大小进行升序排列
      • list1 = [3,5,-4,-1,0,-2,-6]
      • sorted(list1, key=lambda x: abs(x))
  • 对于%s % : 它是作为一个可输入或可变化的变量
    • name= input("Please input your name: ")
    • print("Hello, %s good morning!" %name)
    • Please input your name: Xiaolizi #输入名字Xiaolizi
    • Hello, Xiaolizi good morning! #print 命令<br><br><br><br>

c876a1998ee567a1f1768aaaeb69e088.png


11.画饼图

https://blog.csdn.net/jagbiam1000/article/details/79595279

x       (每一块)的比例,如果sum(x) > 1会使用sum(x)归一化
labels  (每一块)饼图外侧显示的说明文字
explode (每一块)离开中心距离
startangle  起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
shadow  是否阴影
labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧
autopct 控制饼图内百分比设置,可以使用format字符串或者format function
        '%1.1f'指小数点前后位数(没有用空格补齐)
pctdistance 类似于labeldistance,指定autopct的位置刻度
radius  控制饼图半径
  • 普通画图

plt.pie(df['City_Category'].value_counts(), labels=df['City_Category'].unique(),autopct='%1.1f%%')

fb23f890c947be4a2b77e10f5179a453.png
  • 通过groupby聚合后画图

plt.pie(df.groupby('City_Category')['Purchase'].sum(), labels = df['City_Category'].unique(),autopct='%1.1f%%')

ecd358f28b7b3516636ab17d3b22f9f7.png
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值