数据重构
导入多个csv文件(省略)然后将其中两个合并
list_up = [path,ru]
result_up = pd.concat(list_up,axis=1)
result_up.head()
list_up
是一个包含两个元素的列表,其中 path 和ru
是两个数据框(DataFrame)对象。pd.concat()
函数用于将多个数据框按照指定的轴进行拼接。在这里,axis=1
表示沿着列方向进行拼接。result_up
是拼接后的结果,它包含了text_left_up
和text_right_up
的数据。result_up.head()
用于显示结果数据框的前几行,默认显示前5行。
resul_up = text_left_up.join(ru)
result_down = text_left_down.join(rd)
result = result_up.append(result_down)
result.head()
resul_up = text_left_up.join(text_right_up)
: 这行代码将两个DataFrame对象text_left_up
和text_right_up
按照索引进行连接,生成一个新的DataFrame对象result_up
。连接的方式是按照索引进行对齐,并将相同索引位置的元素合并在一起。
result_down = text_left_down.join(text_right_down)
: 这行代码与上一行类似,将两个DataFrame对象text_left_down
和text_right_down
按照索引进行连接,生成一个新的DataFrame对象result_down
。
result = result_up.append(result_down)
: 这行代码将result_up
和result_down
两个DataFrame对象进行追加操作,生成一个新的DataFrame对象result
。追加操作会将两个DataFrame对象的行按顺序连接起来,形成一个新的DataFrame。
result.head()
: 这行代码用于显示result
DataFrame对象的前几行数据。默认情况下,head()
函数会显示前5行数据,但可以通过传递参数来指定显示的行数。综上所述,这段代码的作用是将两个DataFrame对象按照索引进行连接,并将结果追加到一个新的DataFrame对象中,最后显示该DataFrame对象的前几行数据。
result_up = pd.merge(lu,ru,left_index=True,right_index=True)
result_down = pd.merge(ld,rd,left_index=True,right_index=True)
result = result_up.append(result_down)
result.head()
任务中说用append去做合并,但是我这里报错显示df没有append用法,不清楚怎么个事情
换角度看数据
#这里我放的是全部代码,打开的是上面处理之后保存的csv文件
psth = r"C:\Users\86186\数据分析、\a\result.csv"
text = pd.read_csv('result.csv')
text.head()
unit_result=text.stack().head(20)
unit_result.head()
unit_result.to_csv('unit_result.csv')
test = pd.read_csv('unit_result.csv')
test.head()
stack()
函数将DataFrame对象转换为Series对象,即将列索引转换为行索引,并将数据按列堆叠起来。head(20)
函数用于获取前20行的数据,返回一个新的DataFrame对象。unit_result
变量存储了经过处理后的结果,即前20行的数据。unit_result.head()
用于显示unit_result
的前几行数据,默认显示前5行。
数据运用
任务一:学习GroupBy机制
GroupBy机制概述
GroupBy是一种强大的数据聚合处理机制,主要用于对大量级的多维数据进行透视。它的核心逻辑是“分拆-应用-聚合”,其中“应用”是整个流程的核心。理解“应用”的关键在于,脑子里要有对于分拆之后一个个小group的抽象印象1。
GroupBy的使用方式
GroupBy主要有三种基本使用形式:
- `data.groupby([分组键1,分组键2……]).函数`
- `data.groupby([分组键1,分组键2……]).agg(参数)`
- `data.groupby([分组键1,分组键2……]).apply(参数)`1
GroupBy的工作原理
GroupBy的工作原理是基于“分拆-应用-聚合”这三个步骤进行的。首先,通过“分拆”步骤,将数据根据某些属性(字段)划分为不同的组,这些属性被称为“分组键”。然后,在每个组内执行特定的“应用”操作,这可以是简单的统计函数,也可以是复杂的自定义函数。最后,通过“聚合”步骤,将每个组的结果合并起来,形成一个完整的结果集1。
MySQL中的Group By机制
在MySQL中,Group By也是一种常用的数据处理机制,主要用于对数据进行分组,并对每组数据执行聚合函数,如求和、平均、最大上界等。在使用Group By时,需要注意以下几点:
- Group By子句必须出现在任何聚合函数之后,但必须在任何排序或限制子句之前。
- 在Select语句中指定的每个列名也应该在Group By子句中出现。未在这两个地方出现的列名将产生错误。
- Group By子句对每个唯一组合各返回一行4。
总的来说,无论是在Python的Pandas库中,还是在数据库管理系统中,Group By机制都扮演着重要的角色,用于对数据进行高效的聚合处理。
熟悉GroupBy机制
-
计算泰坦尼克号男性与女性的平均票价
-
统计泰坦尼克号中男女的存活人数
-
计算客舱不同等级的存活人数
-
统计在不同等级的票中的不同年龄的船票花费的平均值
-
数据合并,并保存到sex_fare_survived.csv
-
得出不同年龄的总的存活人数,然后找出存活人数最多的年龄段,最后计算存活人数最高的存活率(存活人数/总人数)
df = text['Fare'].groupby(text['Sex'])
means = df.mean()
means
##########################################
survived_sex = text['Survived'].groupby(text['Sex']).sum()
survived_sex.head()
########################################
survived_pclass = text['Survived'].groupby(text['Pclass'])
survived_pclass.sum()
##############################################
text.groupby(['Pclass','Age'])['Fare'].mean().head()
##############################################
result = pd.merge(means,survived_sex,on='Sex')
result
##############################################
survived_age = text['Survived'].groupby(text['Age']).sum()
survived_age.head()
#找出最大值的年龄段
survived_age[survived_age.values==survived_age.max()]
_sum = text['Survived'].sum()
print(_sum)
_sum = text['Survived'].sum()
print("sum of person:"+str(_sum))
precetn =survived_age.max()/_sum
print("最大存活率:"+str(precetn))
思考:
- 泰坦尼克号男性存活率低于女性存活率
- 女性的票价比男性贵,不排除存活率与票价有关
- 等级越高存活率越高
- 如果想知道性别对于存活率的影响,可以计算一下不同等级男女存活率,如果等级低的男女存活率相差不大,那么存活率就与票价有关,因为女性票价比男性票价贵了将近二倍
运算可以通过agg()函数来同时计算。并且可以使用rename函数修改列名。你可以按照提示写出这个过程吗?
text.groupby('Sex').agg({'Fare': 'mean', 'Pclass': 'count'}).rename(columns=
{'Fare': 'mean_fare', 'Pclass': 'count_pclass'})