数据分析(三)数据重构

目录

数据的合并

任务一:将data文件夹里面的所有数据都载入,观察数据的之间的关系

任务二:使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up

任务三:使用concat方法:将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。然后将上边的result_up和result_down纵向合并为result。

任务四:使用DataFrame自带的方法join方法和append:完成任务二和任务三的任务

任务五:使用Panads的merge方法和DataFrame的append方法:完成任务二和任务三的任务

任务:将我们的数据变为Series类型的数据

数据聚合与运算

数据运用

Groupby机制

任务二:计算泰坦尼克号男性与女性的平均票价

 任务三:统计泰坦尼克号中男女的存活人数

任务四:计算客舱不同等级的存活人数

任务五:统计在不同等级的票中的不同年龄的船票花费的平均值 

任务六:将任务二和任务三的数据合并,并保存到sex_fare_survived.csv

任务七:得出不同年龄的总的存活人数,然后找出存活人数最多的年龄段,最后计算存活人数最高的存活率(存活人数/总人数) 


数据的合并

任务一:将data文件夹里面的所有数据都载入,观察数据的之间的关系

text_left_up = pd.read_csv("data2/data/train-left-up.csv")
text_left_down = pd.read_csv("data2/data/train-left-down.csv")
text_right_up = pd.read_csv("data2/data/train-right-up.csv")
text_right_down = pd.read_csv("data2/data/train-right-down.csv")
text_left_up.head()
text_left_down.head()
text_right_up.head()
text_right_down.head()

任务二:使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up

concat方法:

result = pd.concat([df1, df2], axis= ' ')
①axis=0,纵向拼接(默认)
②axis=1,横向拼接

df_concat = pd.concat([df1, df2], keys=['one', 'two'],ignore_index = True) 
# 纵向拼接一般需要重新生成新的索引
df_concat
list_up = [text_left_up,text_right_up]
result_up = pd.concat(list_up,axis=1)
result_up.head()

任务三:使用concat方法:将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。然后将上边的result_up和result_down纵向合并为result。

list_down = [text_left_down,text_right_down]
result_down = pd.concat(list_down,axis=1)
result = pd.concat([result_up,result_down],ignore_index = True)#重新定义索引
result

任务四:使用DataFrame自带的方法join方法和append:完成任务二和任务三的任务

join方法:

Dataframe内置join方法是一种快速合并的方法,它默认以index作为对齐的列。

join(other,on=None,how''left'',lsuffix=" '',rsuffix='' ",sort=False)

上述方法参数表示的含义如下:

on:用于连接名。如果两个表中行索引和列索引重叠,那么当使用join()方法进行合并时,使用参数on指定重叠的列名即可。
how:可以从{“left”,“right”," outer",“inner”} 中任选一个,默认使用left的方式。
lsuffix:接收字符串,用于在左侧重叠的列名后添加后缀名。
rsuffix:接收字符串,用于在右侧重叠的列名后添加后缀名。
sort:接收布尔值,根据连接键对合并的数据进行排序,默认为False。
join()方法默认使用的左连接方式,即以左表为基准,join()方法进行合并后左表的数据会全部展示。
Pandas中的join()合并数据方法_KJ.JK的博客-CSDN博客_pandas的join函数

resul_up = text_left_up.join(text_right_up) # 默认left链接
result_down = text_left_down.join(text_right_down)
result = result_up.append(result_down,ignore_index = True)
result

任务五:使用Panads的merge方法和DataFrame的append方法:完成任务二和任务三的任务

merge方法:

left:左表
right:右表
how:连接方式,inner、left、right、outer,默认为inner
on:用于连接的列名称
left_on:左表用于连接的列名
right_on:右表用于连接的列名
left_index:是否使用左表的行索引作为连接键,默认False
right_index:是否使用右表的行索引作为连接键,默认False
sort:默认为False,将合并的数据进行排序
copy:默认为True,总是将数据复制到数据结构中,设置为False可以提高性能
suffixes:存在相同列名时在列名后面添加的后缀,默认为(’_x’, ‘_y’)
indicator:显示合并数据中数据来自哪个表
 

 pandas的merge方法详解_trayvontang的博客-CSDN博客_pandas的merge

result_up = pd.merge(text_left_up,text_right_up,left_index=True,right_index=True)
result_down = pd.merge(text_left_down,text_right_down,left_index=True,right_index=True)
#通过设置left_index、right_index的值为True来使用索引连接。
result = result_up.append(result_down,ignore_index = True)
result

任务:将我们的数据变为Series类型的数据

 stack函数会将数据从”表格结构“变成”花括号结构“,即将其行索引变成列索引,反之,unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引。

text = pd.read_csv('result.csv')
text.head()
# 代码写在这里
unit_result=text.stack().head(20)
unit_result.head()

-----------------------------------------------------------------------------------------
'''输出
0  Unnamed: 0                           0
   PassengerId                          1
   Survived                             0
   Pclass                               3
   Name           Braund, Mr. Owen Harris
dtype: object'''

数据聚合与运算

数据运用

Groupby机制

 

Python数据分析 – GroupBy机制 - Python数据分析教程 - 炫意HTML5

深入理解和运用Pandas的GroupBy机制——理解篇

Python数据分析 | (28) GroupBy机制_CoreJT的博客-CSDN博客_groupby机制

任务二:计算泰坦尼克号男性与女性的平均票价

grouped  = text['Fare'].groupby(text['Sex'])# 以sex对fare进行分组,分别进行平均值计算
mf=grouped.mean()
mf

 任务三:统计泰坦尼克号中男女的存活人数

survival  = text['Survived'].groupby(text['Sex'])
survival_sex = survival.sum()
survival_sex

任务四:计算客舱不同等级的存活人数

groupby:返回的是一个DataFrameGroupBy结构,这个结构必须调用聚合函数(如sum)之后,才会得到结构为Series的数据结果。每次用groupby函数后,都是要接类似sum、mean等聚合函数才能输出。

【思考】从任务二到任务三中,这些运算可以通过agg()函数来同时计算。并且可以使用rename函数修改列名。 

agg:是DataFrame的直接方法,返回的也是一个DataFrame。当然,很多功能用sum、mean等等也可以实现。但是agg更加简洁, 而且传给它的函数可以是字符串,也可以自定义,参数是column对应的子DataFrame。

如何使用agg函数对数据进行分组聚合 - 知乎 

text.groupby('Sex').agg({'Fare': 'mean', 'Pclass': 'count'}).rename(columns=
                            {'Fare': 'mean_fare', 'Pclass': 'count_pclass'})
                            #以字典方式实现聚合

任务五:统计在不同等级的票中的不同年龄的船票花费的平均值 

text.groupby(['Pclass','Age'])['Fare'].mean()

任务六:将任务二和任务三的数据合并,并保存到sex_fare_survived.csv

result = pd.merge(mf,survival_sex,on='Sex')#on:用于连接的列名称
result
result.to_csv('sex_fare_survived.csv')

任务七:得出不同年龄的总的存活人数,然后找出存活人数最多的年龄段,最后计算存活人数最高的存活率(存活人数/总人数) 

#不同年龄的存活人数
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))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataGear是一款数据可视化分析平台,使用Java语言开发,采用浏览器/服务器架构,支持SQL、CSV、Excel、HTTP接口、JSON等多种数据源,主要功能包括数据管理、SQL工作台、数据导入/导出、数据集管理、图表管理、看板管理等。 系统特点: 1、可管理数据库驱动 可通过驱动程序管理功能添加数据库驱动程序,无需重启,即可支持连接新数据库; 2、多种格式的数据集 支持SQL、CSV、Excel、HTTP接口、JSON等多种格式的数据集; 3、多数据集聚合图表 一个图表可添加多个不同格式的数据集,将它们聚合展示; 4、插件式图表类型 每一种类型的图表都以图表插件形式提供,并内置了大量图表插件,管理员也可上传自定义图表插件,丰富系统图表类型; 5、可自由编辑的HTML看板模板 看板使用原生的HTML网页作为模板,可自由编辑、绑定、异步加载图表,并支持将任意HTML网页导入为看板; 6、丰富的看板API 看板页面内置了大量的页面端API,可用于个性化扩展看板功能。 模块介绍: 1、datagear-analysis 数据分析底层模块,定义数据集、图表、看板API 2、datagear-connection 数据库连接支持模块,定义可从指定目录加载JDBC驱动、新建连接的API 3、datagear-dataexchange 数据导入/导出底层模块,定义导入/导出指定数据数据的API 4、datagear-management 系统业务服务模块,定义数据源、数据分析等功能的服务层API 5、datagear-meta 数据源元信息底层模块,定义解析指定数据源表结构的API 6、datagear-persistence 数据数据管理底层模块,定义读取、编辑、查询数据源表数据的API 7、datagear-util 系统常用工具集模块 8、datagear-web 系统业务web模块,定义web控制器、操作页面 9、datagear-webapp 系统Web应用程序组织模块,定义将系统构建为标准WAR程序包的结构 10、datagear-webappembd 系统独立应用程序组织模块,定义将系统构建为独立可执行程序的结构 依赖: Java 8+ Servlet 3.0+ 编译: (执行单元测试编译,需要预先配置单元测试环境) mvn clean package (不执行单元测试编译,无需预先配置单元测试环境) mvn clean package -DskipTests 运行: cd datagear-webappembd/target/datagear-[version] (Linux环境) ./startup.sh (windows环境) startup.bat 调试: 1、将datagear以maven工程导入至IDE工具; 2、将datagear-webapp作为Web应用添加至servlet容器(比如Tomcat); 3、以调试模式运行Servlet容器。 调试注意: 在调试开发分支前(dev-*),建议先备份DataGear工作目录([用户主目录]/.datagear), 因为开发分支程序启动时会修改DataGear工作目录,可能会导致先前使用的正式版程序、以及后续发布的正式版程序无法正常启动。 调试时,系统仅会在第一次启动时升级内置数据库(Derby),如果遇到内置数据库访问异常,需要查看 datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql 文件,从中查找需要更新的SQL语句,手动更新至内置数据库。 系统自带了一个可用于为内置数据库执行SQL语句的简单工具类org.datagear.web.util.DerbySqlClient,可以在IDE中直接运行。注意:运行前需要先停止DataGear程序。 DataGear数据可视化分析平台 更新日志: v2.9.0 重构内置表格图表配置项,支持细粒度配置表格样式

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值