day5 数据重构

数据重构

导入多个csv文件(省略)然后将其中两个合并

list_up = [path,ru]
result_up = pd.concat(list_up,axis=1)
result_up.head()
  1. list_up 是一个包含两个元素的列表,其中 path 和 ru 是两个数据框(DataFrame)对象。
  2. pd.concat() 函数用于将多个数据框按照指定的轴进行拼接。在这里,axis=1 表示沿着列方向进行拼接。
  3. result_up 是拼接后的结果,它包含了 text_left_uptext_right_up 的数据。
  4. 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()
  1. resul_up = text_left_up.join(text_right_up): 这行代码将两个DataFrame对象text_left_uptext_right_up按照索引进行连接,生成一个新的DataFrame对象result_up。连接的方式是按照索引进行对齐,并将相同索引位置的元素合并在一起。

  2. result_down = text_left_down.join(text_right_down): 这行代码与上一行类似,将两个DataFrame对象text_left_downtext_right_down按照索引进行连接,生成一个新的DataFrame对象result_down

  3. result = result_up.append(result_down): 这行代码将result_upresult_down两个DataFrame对象进行追加操作,生成一个新的DataFrame对象result。追加操作会将两个DataFrame对象的行按顺序连接起来,形成一个新的DataFrame。

  4. 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机制

  1. 计算泰坦尼克号男性与女性的平均票价
  2. 统计泰坦尼克号中男女的存活人数
  3. 计算客舱不同等级的存活人数
  4. 统计在不同等级的票中的不同年龄的船票花费的平均值
  5. 数据合并,并保存到sex_fare_survived.csv
  6. 得出不同年龄的总的存活人数,然后找出存活人数最多的年龄段,最后计算存活人数最高的存活率(存活人数/总人数)
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'})

  • 25
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值