首页 > 其他分享 >动手学数据分析 -- Task01_3

动手学数据分析 -- Task01_3

时间:2023-01-16 13:33:28浏览次数:49  
标签:数据分析 index -- DataFrame df np Task01 排序 数据

复习:在前面我们已经学习了Pandas基础,知道利用Pandas读取csv数据的增删查改,今天我们要学习的就是探索性数据分析,主要介绍如何利用Pandas进行排序、算术计算以及计算描述函数describe()的使用。

1 第一章:探索性数据分析

开始之前,导入numpy、pandas包和数据

#加载所需的库
import numpy as np
import pandas as pd
#载入之前保存的train_chinese.csv数据,关于泰坦尼克号的任务,我们就使用这个数据
df = pd.read_csv("train_chinese.csv")

1.6 了解你的数据吗?

教材《Python for Data Analysis》第五章

1.6.1 任务一:利用Pandas对示例数据进行排序,要求升序

具体请看《利用Python进行数据分析》第五章 排序和排名 部分

自己构建一个都为数字的DataFrame数据

我们举了一个例子
pd.DataFrame() :创建一个DataFrame对象 
np.arange(8).reshape((2, 4)) : 生成一个二维数组(2*4),第一列:0,1,2,3 第二列:4,5,6,7
index=[2,1] :DataFrame 对象的索引列
columns=['d', 'a', 'b', 'c'] :DataFrame 对象的索引行

sample = pd.DataFrame(np.random.randn(3,3), index = list('213'), columns = list('bca'))
【代码解析】

pd.DataFrame() :创建一个DataFrame对象

np.arange(8).reshape((2, 4)) : 生成一个二维数组(2*4),第一列:0,1,2,3 第二列:4,5,6,7

index=['2, 1] :DataFrame 对象的索引列

columns=['d', 'a', 'b', 'c'] :DataFrame 对象的索引行
【问题】:大多数时候我们都是想根据列的值来排序,所以将你构建的DataFrame中的数据根据某一列,升序排列

回答代码

sample.sort_values('b')
【思考】通过书本你能说出Pandas对DataFrame数据的其他排序方式吗?
【总结】下面将不同的排序方式做一个总结
1.让行索引升序排序

#代码
sample.sort_index()

2.让列索引升序排序

#代码
sample.sort_values(anxis = 1)

3.让列索引降序排序

#代码
sample.sort_index(axis = 1, ascending = False)

4.让任选两列数据同时降序排序

#代码
sample.sort_values(['a', 'c'], ascending = False)

1.6.2 任务二:对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从这个数据中你可以分析出什么?

在开始我们已经导入了train_chinese.csv数据,而且前面我们也学习了导入数据过程,根据上面学习,我们直接对目标列进行排序即可
head(20) : 读取前20条数据

#代码
df.sort_values(['票价', '年龄'], ascending = False)

【思考】排序后,如果我们仅仅关注年龄和票价两列。根据常识我知道发现票价越高的应该客舱越好,所以我们会明显看出,票价前20的乘客中存活的有14人,这是相当高的一个比例,那么我们后面是不是可以进一步分析一下票价和存活之间的关系,年龄和存活之间的关系呢?当你开始发现数据之间的关系了,数据分析就开始了。

当然,这只是我的想法,你还可以有更多想法,欢迎写在你的学习笔记中。

**多做几个数据的排序**
#代码
df.sort_values(['票价'], ascending = False)

1.6.3 任务三:利用Pandas进行算术计算,计算两个DataFrame数据相加结果

具体请看《利用Python进行数据分析》第五章 算术运算与数据对齐 部分

自己构建两个都为数字的DataFrame数据

我们举了一个例子:
frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),
                     columns=['a', 'b', 'c'],
                     index=['one', 'two', 'three'])
frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),
                     columns=['a', 'e', 'c'],
                     index=['first', 'one', 'two', 'second'])
frame1_a
#代码
x = pd.DataFrame(np.random.randn(3,3), index = list('213'), columns = list('bca'))
y = pd.DataFrame(np.random.randn(3,3), index = list('413'), columns = list('bcd'))

将frame_a和frame_b进行相加

#代码
x + y

【提醒】两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN。

当然,DataFrame还有很多算术运算,如减法,除法等,有兴趣的同学可以看《利用Python进行数据分析》第五章 算术运算与数据对齐 部分,多在网络上查找相关学习资料。

1.6.4 任务四:通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?

还是用之前导入的chinese_train.csv如果我们想看看在船上,最大的家族有多少人(‘兄弟姐妹个数’+‘父母子女个数’),我们该怎么做呢?

#代码
df['堂兄弟/妹个数'] + df['父母与小孩个数']
max(df['堂兄弟/妹个数'] + df['父母与小孩个数'])

【提醒】我们只需找出”兄弟姐妹个数“和”父母子女个数“之和最大的数,当然你还可以想出很多方法和思考角度,欢迎你来说出你的看法。
多做几个数据的相加,看看你能分析出什么?

1.6.5 任务五:学会使用Pandas describe()函数查看数据基本统计信息

(1) 关键知识点示例做一遍(简单数据)

具体请看《利用Python进行数据分析》第五章 汇总和计算描述统计 部分

自己构建一个有数字有空值的DataFrame数据

我们举了一个例子:
frame2 = pd.DataFrame([[1.4, np.nan], 
                       [7.1, -4.5],
                       [np.nan, np.nan], 
                       [0.75, -1.3]
                      ], index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
frame2
#代码
df.describe()

调用 describe 函数,观察frame2的数据基本信息

#代码
df.describe()

1.6.6 任务六:分别看看泰坦尼克号数据集中 票价、父母子女 这列数据的基本统计数据,你能发现什么?

看看泰坦尼克号数据集中 票价 这列数据的基本统计数据

#代码
df['票价'].describe()
df['父母与小孩个数'].describe()

【思考】从上面数据我们可以看出,试试在下面写出你的看法。然后看看我们给出的答案。

当然,答案只是我的想法,你还可以有更多想法,欢迎写在你的学习笔记中。
多做几个组数据的统计,看看你能分析出什么?

# 写下你的其他分析
from matplotlib import pyplot as plt
plt.hist(df['年龄'])

【思考】有更多想法,欢迎写在你的学习笔记中。
【总结】本节中我们通过Pandas的一些内置函数对数据进行了初步统计查看,这个过程最重要的不是大家得掌握这些函数,而是看懂从这些函数出来的数据,构建自己的数据分析思维,这也是第一章最重要的点,希望大家学完第一章能对数据有个基本认识,了解自己在做什么,为什么这么做,后面的章节我们将开始对数据进行清洗,进一步分析。

标签:数据分析,index,--,DataFrame,df,np,Task01,排序,数据
From: https://www.cnblogs.com/horolee/p/17055201.html

相关文章

  • HTML:文档声明<!DOCTYPE>、严格模式、怪异模式
    1、什么是<!DOCTYPE><!DOCTYPEhtml><!DOCTYPE>是一个文档声明,它不是HTML标签,而是一条信息,告知浏览器期望的文档类型,帮助浏览器确定其尝试解析和显示的HTML文档类型。......
  • 【深入浅出Spring原理及实战】「源码调试分析」结合DataSourceRegister深入分析Import
    每日一句人的一生中不可能会一帆风顺,总会遇到一些挫折,当你对生活失去了信心的时候,仔细的看一看、好好回想一下你所遇到的最美好的事情吧,那会让你感觉到生活的美好。注入案例......
  • 【干货】2022鹏业安装算量软件10个常见问题整理
    1、图纸导入捕捉点不精确操作步骤:①底图按钮;进入底图状态②鼠标右键;底图无法捕捉③根据提示框选图纸范围2、管道保温不出量操作步骤:①查看主项规格,类别,保温厚度是否设......
  • c# ?的用法
    1、可空类型修饰符(?),如:int?x=null;//可空类型默认值都是null,而值类型如int默认值为0、bool默认值为false等int?x=3;//等同于Nullable<int>x=newNullable<int>(......
  • ubuntu22 安装node16报错
    情况用的阿里云ECS,本地apt安装只能到12,所以采取网上说法curl-sLhttps://deb.nodesource.com/setup_16.x|sudo-Ebash-sudoapt-getinstall-ynodejs然后遇到......
  • 66. 加一
    66.加一题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设......
  • 【深入浅出Spring原理及实战】「源码调试分析」结合DataSourceRegister深入分析Import
    每日一句人的一生中不可能会一帆风顺,总会遇到一些挫折,当你对生活失去了信心的时候,仔细的看一看、好好回想一下你所遇到的最美好的事情吧,那会让你感觉到生活的美好。注......
  • iptables端口转发
    用一个例子说明:服务器:192.168.0.121:27896中转机:192.168.0.163:27896在192.168.0.121的端口27896上开启了一个服务器,我希望访问中转机192.168.0.163的27896也可以访问到......
  • tracer ftrace笔记(12)—— trace文档翻译与实验——README
    基于Linux-5.10.110一、翻译/sys/kernel/tracing#catREADMEtracingmini-HOWTO:#echo0>tracing_on//禁用trace的快速方法#echo1>tracing_on//重新启用tr......
  • 部分网页中仅提供浏览的pdf文件下载方法
    现在越来越多的网站提供的PDF资料只能在线浏览,不提供下载功能,实际上仅仅是通过网页PDF浏览插件来访问文件资源,如果能够获取到该文件的访问地址,就可以访问下载。以Firefox......