IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 动手学数据分析Task03 -> 正文阅读

[Python知识库]动手学数据分析Task03

数据重构

数据重构依旧属于数据理解(准备)的范围。
首先还是导入库和数据集,

import numpy as np
import pandas as pd
text = pd.read_csv('/Users/wensa/Desktop/titanic/train_chinese.csv')
text.head()

数据的合并

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

text_left_up = pd.read_csv("C:\\Users\\wensa\\Desktop\\hands-on-data-analysis-master\\第二章项目集合\\data\\train-left-up.csv")
text_left_down = pd.read_csv("C:\\Users\\wensa\\Desktop\\hands-on-data-analysis-master\\第二章项目集合\\data\\train-left-down.csv")
text_right_up = pd.read_csv("C:\\Users\\wensa\\Desktop\\hands-on-data-analysis-master\\第二章项目集合\\data\\train-right-up.csv")
text_right_down = pd.read_csv("C:\\Users\\wensa\\Desktop\\hands-on-data-analysis-master\\第二章项目集合\\data\\train-right-down.csv")

观察了一下这四个表格的数据,大致是之前的总数据train的四个角落分布。

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

参数含义:
axis:{0,1,…},默认为0。沿着连接的轴。指定对象按照那个轴进行拼接,默认为0(纵向拼接),1为横向横向拼接

list1 = [text_left_up,text_right_up]
result_up = pd.concat(list1,axis=1)
result_up.head()

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

list2 = [text_left_down,text_right_down]
result_down = pd.concat(list2,axis=1)
result = pd.concat([result_up,result_down])
result.head()

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

dataframe内置了join方法是一种快速合并的方法。它默认以index作为对齐的列。(理解为左右连接)

官方文档中是这样描述append的用途的“在表尾中添加新行,并且返回添加后的数据对象,如果添加的行中存在原数据中没有的列,那么将给原数据添加一个新列,并用nan补值。”

DataFrame.append(*other*, *ignore_index=False*, *verify_integrity=False*, *sort=None*)

1.other: 是要添加的数据,append很不挑食,这个other可以是dataframe,dict,Seris,list等等。
2.ignore_index: 参数为True时将在数据合并后,按照0,1,2,3…的顺序重新设置索引,忽略了旧索引。
3.verify_integrity:参数为True时,如果合并的数据与原数据包含索引相同的行,将报错。
参考:pandas数据合并之append与concat

作者:躺在稻田里的小白菜
链接:https://www.jianshu.com/p/29f5c6792f61
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

#先左右合并
resul_up = text_left_up.join(text_right_up)
result_down = text_left_down.join(text_right_down)
#再上下合并
result = result_up.append(result_down)
result.head()

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

学习资料参考:[Python3]pandas.merge用法详解

left_index和right_index用来将行索引用作连接键。

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)
result = resul_up.append(result_down)
result.head()

【思考】对比merge、join以及concat的方法的不同以及相同。思考一下在任务四和任务五的情况下,为什么都要求使用DataFrame的append方法,如何只要求使用merge或者join可不可以完成任务四和任务五呢?
思考:这三种方法都是可以将表格进行左右之间的连接即合并。不同的是,concat可以通过改变axis来改变横纵连接方向,而merge和join只能列进行连接。一定要用append方法是要将上下两个表合并;我觉得不可以。
学习参考:pandas 左右边界切割 用merge join和concat合并Pandas中的数据

任务六:完成的数据保存为result.csv

result.to_csv('result.csv')

换一种角度看数据

任务一:将我们的数据变为Series类型的数据
(参考了答案)

stack()即“堆叠”,作用是将列旋转到行;
unstack()即stack()的反操作,将行旋转到列

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()

数据聚合与运算

任务一:通过教材《Python for Data Analysis》P303、Google or anything来学习了解GroupBy机制
学习参考:Pandas进阶笔记 (一) Groupby 重难点总结

学习心得:GroupBy机制主要用来分组,可以根据单个或多个标签来进行分组,分组的标签也可以是数组;再进行各种操作并将结果组合。GroupBy经常只需一行代码,就可以计算每组的和,均值,计数,最小值以及其他累计值。它返回一个DataFrameGroupby对象,你可以将它看成是一个特殊的DataFrame对象,里面隐藏着若干组数据。

GroupBy可以分解为三个步骤:
Splitting: 把数据按主键划分为很多个小组,由 groupby 实现。
Applying: 对每个小组独立地使用函数,由 agg、apply、transform、filter实现具体的操作。
Combining: 把所得到的结果组合,由 concat 等实现。

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

df  = text['Fare'].groupby(text['Sex'])
means = df.mean()
means

Sex
female 44.479818
male 25.523893
Name: Fare, dtype: float64

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

survived_sex = text['Survived'].groupby(text['Sex']).sum()
survived_sex.head()

Sex
female 233
male 109
Name: Survived, dtype: int64

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

survived_pclass = text['Survived'].groupby(text['Pclass'])
survived_pclass.sum()

Pclass
1 136
2 87
3 119
Name: Survived, dtype: int64

【思考】从数据分析的角度,上面的统计结果可以得出哪些结论
思考:男性的票价偏贵,且存活下来的男性比女性多,但这也有可能是本来在泰坦尼克上的男性本身比女性多的原因;不同等级客舱对存活人数不一定有影响。

agg聚合操作
聚合操作是通过agg来完成的,可以指定一个列或者多个列分别使用不同的聚合函数来聚合。

1、对单个列进行聚合操作
2、对多个列使用不同的聚合函数

#例子:
text.groupby('Sex').agg({'Fare': 'mean', 'Pclass': 'count'}).rename(columns=
                            {'Fare': 'mean_fare', 'Pclass': 'count_pclass'})

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

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

Pclass Age
1 0.92 151.5500
2.00 151.5500
4.00 81.8583
11.00 120.0000
14.00 120.0000
Name: Fare, dtype: float64

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

result = pd.merge(means,survived_sex,on='Sex')
result
result.to_csv('sex_fare_survived.csv')#保存
            Fare    	Survived
   Sex		
 female 	44.479818	233
 male	    25.523893	109

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

#不同年龄的存活人数
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 of person:"+str(_sum))
precetn =survived_age.max()/_sum
print("最大存活率:"+str(precetn))

sum of person:342
最大存活率:0.043859649122807015

总结

这次的任务主要还是对数据的准备,其中GroupBy机制在我了解上是比较顺手的,但是对这一方面的了解还不够透彻,还得继续学习在这个机制,对将来数据分析上会有很大用处。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 11:52:21  更:2021-07-17 11:54:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 19:38:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码