课程资料参考自[1]
导入包和数据并且打印
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
text = pd.read_csv("E:/Python/python操作/Datawhale/datawhale数据分析/关于数据/第二章项目集合/result.csv")
print(text.head())
# Unnamed: 0 PassengerId Survived ... Fare Cabin Embarked
# 0 0 1 0 ... 7.2500 NaN S
# 1 1 2 1 ... 71.2833 C85 C
# 2 2 3 1 ... 7.9250 NaN S
# 3 3 4 1 ... 53.1000 C123 S
# 4 4 5 0 ... 8.0500 NaN S
#
# [5 rows x 13 columns]
貌似pycharm显示csv文件不全是常规
'''可视化展示泰坦尼克号数据集中男女中生存人数分布情况(用柱状图试试)'''
sex = text.groupby('Sex')['Survived'].sum()
sex.plot.bar()
plt.title('survived_count')
plt.show()
关于groupby
的介绍,见[2]
groupby就是按xx分组,比如, 将一个数据集按A进行分组, 效果是这样:
操作就是data.groupby('A')
,这个会返回一个DataFrameGroupBy
的东西。这个DataFrameGroupBy
主要的功能能是允许你在不额外写循环的情况下, 快速对每一组数据进行操作。
最基本的就是组内计数, 求和, 求均值, 求方差,例如求不同种族内XX年龄的平均值,就是data.groupby('race')['age'].mean()
,会得到一个Series
。
age
是连续属性,还可以对离散属性进行操作,比如对不同取值的计数: .value_counts()
,类似data.groupby('race')['signs_of_mental_illness'].value_counts()
效果图类似:
A False 29
True 10
B False 523
True 95
......
Name: signs_of_mental_illness, dtype: int64
这时, 组内操作的结果不是单个值, 是一个序列, 可以用.unstack()
将它展开。
data.groupby('race')['signs_of_mental_illness'].value_counts().unstack()
感觉这个还不够熟悉,接着查找资料找到了[6]
大佬主要分成了四个部分进行讲解:
第一部分是groupby
的作用,第二部分是单类分组,第三类是多类分组,第四类是时间分组。
首先第一部分,groupby
的作用是进行数据的分组以及分组后地组内运算。
df[](指输出数据的结果属性名称).groupby([df[属性],df[属性])(指分类的属性,数据的限定定语,可以有多个).mean()(对于数据的计算方式——函数名称)
例如print(df["评分"].groupby([df["地区"],df["类型"]]).mean())
第二部分是单类分组,A.groupby("性别")
这个的意思是有一个变量A
,数据类型是DataFrame
,想要按照【性别】进行分组,得到的结果是一个Groupby
对象,还没有进行任何的运算。
可以看到直接打印得到的结果是Groupby
对象
刚刚也提到了没有任何的运算,如果加上了describe()
,就是描述组内数据的基本统计量。
A.groupby("性别").describe().unstack()
只有数字类型的列数据才会计算统计
示例里面数字类型的数据有两列 【班级】和【身高】
如果不需要【班级】只需要【身高】,就是A.groupby("性别")["身高"].describe().unstack()
第三个是多类分组,A.groupby( ["班级","性别"])
如多类分组的例子所示,单独用groupby
,我们得到的还是一个 Groupby
对象。
关于相关的函数有:
还可以一次运用多个函数计算,例如
A.groupby( ["班级","性别"]).agg([np.sum, np.mean, np.std]) # 一次计算了三个