目录

    • 开始之前,导入numpy、pandas包和数据
  • 1.6 了解你的数据吗?
    • 1.6.1 任务一:利用Pandas对示例数据进行排序,要求升序
    • 1.6.2 任务二:对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从这个数据中你可以分析出什么?
    • 1.6.3 任务三:利用Pandas进行算术计算,计算两个DataFrame数据相加结果
    • 1.6.4 任务四:通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
    • 1.6.5 任务五:学会使用Pandas describe()函数查看数据基本统计信息
    • 1.6.6 任务六:分别看看泰坦尼克号数据集中 票价、父母子女 这列数据的基本统计数据,你能发现什么?

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

#加载所需的库
import numpy as np
import pandas as pd
#载入之前保存的train_chinese.csv数据,关于泰坦尼克号的任务,我们就使用这个数据
df = pd.read_csv('train_chinese.csv')
df.head()
乘客ID 是否幸存 仓位等级 姓名 性别 年龄 兄弟姐妹个数 父母子女个数 船票信息 票价 客舱 登船港口
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S

1.6 了解你的数据吗?

教材《Python for Data Analysis》第五章

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

# 具体请看《利用Python进行数据分析》第五章 排序和排名 部分
#自己构建一个都为数字的DataFrame数据
df = pd.DataFrame(np.arange(8).reshape((2,4)), index = [2, 1], columns = ['d', 'a', 'b', 'c'])
df
d a b c
2 0 1 2 3
1 4 5 6 7

【代码解析】

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中的数据根据某一列,升序排列

df.sort_values(by = "c", ascending=True)#默认为True
d a b c
2 0 1 2 3
1 4 5 6 7

【思考】通过书本你能说出Pandas对DataFrame数据的其他排序方式吗?

【总结】下面将不同的排序方式做一个总结

1.让行索引升序排序

df.sort_index()
d a b c
1 4 5 6 7
2 0 1 2 3

2.让列索引升序排序

df.sort_index(axis = 1)
a b c d
2 1 2 3 0
1 5 6 7 4

3.让列索引降序排序

df.sort_index(axis = 1, ascending=False)
d c b a
2 0 3 2 1
1 4 7 6 5

4.让任选两列数据一列升序,一列降序

df.sort_values(['a','c'], ascending=[True, False])
d a b c
2 0 1 2 3
1 4 5 6 7

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

df = pd.read_csv('train_chinese.csv')
df.sort_values(["票价", "年龄"], ascending=False).head(10)
乘客ID 是否幸存 仓位等级 姓名 性别 年龄 兄弟姐妹个数 父母子女个数 船票信息 票价 客舱 登船港口
679 680 1 1 Cardeza, Mr. Thomas Drake Martinez male 36.0 0 1 PC 17755 512.3292 B51 B53 B55 C
258 259 1 1 Ward, Miss. Anna female 35.0 0 0 PC 17755 512.3292 NaN C
737 738 1 1 Lesurer, Mr. Gustave J male 35.0 0 0 PC 17755 512.3292 B101 C
438 439 0 1 Fortune, Mr. Mark male 64.0 1 4 19950 263.0000 C23 C25 C27 S
341 342 1 1 Fortune, Miss. Alice Elizabeth female 24.0 3 2 19950 263.0000 C23 C25 C27 S
88 89 1 1 Fortune, Miss. Mabel Helen female 23.0 3 2 19950 263.0000 C23 C25 C27 S
27 28 0 1 Fortune, Mr. Charles Alexander male 19.0 3 2 19950 263.0000 C23 C25 C27 S
742 743 1 1 Ryerson, Miss. Susan Parker "Suzette" female 21.0 2 2 PC 17608 262.3750 B57 B59 B63 B66 C
311 312 1 1 Ryerson, Miss. Emily Borie female 18.0 2 2 PC 17608 262.3750 B57 B59 B63 B66 C
299 300 1 1 Baxter, Mrs. James (Helene DeLaudeniere Chaput) female 50.0 0 1 PC 17558 247.5208 B58 B60 C

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

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

# 具体请看《利用Python进行数据分析》第五章 算术运算与数据对齐 部分
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
a b c
one 0.0 1.0 2.0
two 3.0 4.0 5.0
three 6.0 7.0 8.0
frame1_b
a e c
first 0.0 1.0 2.0
one 3.0 4.0 5.0
two 6.0 7.0 8.0
second 9.0 10.0 11.0

将frame_a和frame_b进行相加

frame1_a + frame1_b
a b c e
first NaN NaN NaN NaN
one 3.0 NaN 7.0 NaN
second NaN NaN NaN NaN
three NaN NaN NaN NaN
two 9.0 NaN 13.0 NaN

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

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

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

df1 = df["兄弟姐妹个数"] + df["父母子女个数"]
df["家族人数"] = max(df1)
df[df1 == max(df1)]
乘客ID 是否幸存 仓位等级 姓名 性别 年龄 兄弟姐妹个数 父母子女个数 船票信息 票价 客舱 登船港口 家族人数
159 160 0 3 Sage, Master. Thomas Henry male NaN 8 2 CA. 2343 69.55 NaN S 10
180 181 0 3 Sage, Miss. Constance Gladys female NaN 8 2 CA. 2343 69.55 NaN S 10
201 202 0 3 Sage, Mr. Frederick male NaN 8 2 CA. 2343 69.55 NaN S 10
324 325 0 3 Sage, Mr. George John Jr male NaN 8 2 CA. 2343 69.55 NaN S 10
792 793 0 3 Sage, Miss. Stella Anna female NaN 8 2 CA. 2343 69.55 NaN S 10
846 847 0 3 Sage, Mr. Douglas Bullen male NaN 8 2 CA. 2343 69.55 NaN S 10
863 864 0 3 Sage, Miss. Dorothy Edith "Dolly" female NaN 8 2 CA. 2343 69.55 NaN S 10

【提醒】我们只需找出”兄弟姐妹个数“和”父母子女个数“之和最大的数。

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
one two
a 1.40 NaN
b 7.10 -4.5
c NaN NaN
d 0.75 -1.3

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

print(frame2.describe())'''
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
'''
            one       two
count  3.000000  2.000000
mean   3.083333 -2.900000
std    3.493685  2.262742
min    0.750000 -4.500000
25%    1.075000 -3.700000
50%    1.400000 -2.900000
75%    4.250000 -2.100000
max    7.100000 -1.300000'\ncount : 样本数据大小\nmean : 样本数据的平均值\nstd : 样本数据的标准差\nmin : 样本数据的最小值\n25% : 样本数据25%的时候的值\n50% : 样本数据50%的时候的值\n75% : 样本数据75%的时候的值\nmax : 样本数据的最大值\n'

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

df['票价'].describe()
count    891.000000
mean      32.204208
std       49.693429
min        0.000000
25%        7.910400
50%       14.454200
75%       31.000000
max      512.329200
Name: 票价, dtype: float64

【思考】从上面数据我们可以看出,一共有891个票价数据,平均值约为:32.20,标准差约为49.69,说明票价波动特别大,25%的人的票价是低于7.91的,50%的人的票价低于14.45,75%的人的票价低于31.00,票价最大值约为512.33,最小值为0。

df['父母子女个数'].describe()
count    891.000000
mean       0.381594
std        0.806057
min        0.000000
25%        0.000000
50%        0.000000
75%        0.000000
max        6.000000
Name: 父母子女个数, dtype: float64

【思考】从上面数据我们可以看出,一共891个父母子女个数数据,平均值约为:0.38,标准差约为0.80,说明票价波动特别大,75%的人的父母子女个数为0,父母子女个数的最大值约为6,最小值为0。

【总结】本节中我们通过Pandas的一些内置函数对数据进行了初步统计查看,这个过程最重要的不是大家得掌握这些函数,而是看懂从这些函数出来的数据,构建自己的数据分析思维。

(三)pandas开源课程学习笔记——探索性数据分析相关推荐

  1. python中pandas格式_Python学习笔记之数据分析中Pandas常用知识

    前言 Pandas基于两种数据类型:series与dataframe. 一个series是一个一维的数据类型,其中每一个元素都有一个标签.series类似于Numpy中元素带标签的数组.其中,标签可以 ...

  2. 台湾大学林轩田机器学习技法课程学习笔记4 -- Soft-Margin Support Vector Machine

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Kernel SVM.先将特征转换和计算内积这两个步骤合并起来,简化计算.提高计算速度,再用Dual SVM的求解方法来解决. ...

  3. PDF下载!《Python十大基础专题》《247个Python综合案例》《Pandas 20页学习笔记》...

    Python 技术栈 完整学习路线 如今书籍汗牛充栋,如何从零.循序渐进地掌握Python技术栈,成为很多读者朋友们关心的问题.最近,我特意按照Python技术栈的学习逻辑,把它划分为六个阶段,并且给 ...

  4. 台湾大学林轩田机器学习技法课程学习笔记1 -- Linear Support Vector Machine

    红色石头的个人网站:redstonewill.com 关于台湾大学林轩田老师的<机器学习基石>课程,我们已经总结了16节课的笔记.这里附上基石第一节课的博客地址: 台湾大学林轩田机器学习基 ...

  5. 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了非线性分类模型,通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行分类,分析了非线性变换可能会使计算复杂度 ...

  6. c语言课程笔记格式,C语言课程学习笔记.docx

    C语言课程学习笔记 C语言基础语言排行榜C--java--objective-C进制:进制:进位机制.用普通的话讲,应该为人为的定义一种度量来标识一样东西.计算机常用的进制有:十进制.二进制.八进制和 ...

  7. 斯坦福大学CS520知识图谱系列课程学习笔记:第三讲高级的知识图谱是什么样的

    这一讲的主题是:一些高级的知识图谱是什么样的.三位讲者分别从他们各自带领的团队构建出来的高质量的知识图谱实例出发,从中我们可以认识到一些大佬们构建的优秀的知识图谱产品有哪些特点和优势,从中对我们自己构 ...

  8. 斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱

    上一讲我们学习了知识图谱的一些基本概念: 斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱 本节课程关于如何构建知识图谱,因为知识图谱的构建是整个知识图谱领域的一个非常核心且基础的工 ...

  9. gram矩阵的性质_第十七课:正交矩阵和GramSchmidt正交化——MIT线性代数课程学习笔记...

    公众号关注  "DL_NLP" 设为 "星标",重磅干货,第一时间送达! ◎ 原创 | 深度学习算法与自然语言处理 ◎ 作者 | 丁坤博 一. 知识概要 这一节 ...

最新文章

  1. 优化eclipse启动速度
  2. 超级变态的MySQL语句[2012-9-20]
  3. python工具是什么-python有什么好用的持续集成工具么?
  4. 【杂谈】有三AI季划的最核心价值在哪,听听这些同学怎么说!
  5. html面包屑菜鸟,css content属性与before及after伪元素配合使用价值发挥到最大
  6. centeros7 mysql,center os 7 Mysql 安装
  7. [转载]ASP.NET开发经验积累
  8. 牛客网 最短路 Floyd算法 Dijkstra算法 Java大数
  9. 进程外Session保存和全局文件错误捕获
  10. iOS 使用 socket 即时通信(非第三方库)
  11. linux mysql jdk路径配置,Linux下的jdk1.5+eclipse+mysql开发环境配置的经验总结
  12. lopatkin俄大神精简中文系统Windows 10 Pro 19041.21 20H1 Release x86-x64 ZH-CN SMS
  13. python快捷键设置,环境设置、输出print、转义字符、标识符
  14. matlab 中的textscan
  15. web指纹识别技术研究与优化实现
  16. 阿里云盘的webdav协议开源实现
  17. 接口中的变量public static final
  18. fpga图像处理------常用算法(二)
  19. 企业微信推送消息延迟_微信接收消息总是延迟?没有提醒,这3个功能赶紧设置一下...
  20. iphone常用代码锦集(二)

热门文章

  1. python爬取小说写入txt_用python爬整本小说写入txt文件
  2. 深入理解Kubernetes网络策略
  3. 阿里字体图标之Symbol用法
  4. 在HTML种引用阿里巴巴iconfont字体图标
  5. HIFIVE音乐开放平台K歌小程序api接口文档
  6. 在R700上重新安装了Ubuntu kylin 14.04
  7. android百度地图自定义图层,百度地图开发之百度地图定位图层基本使用方法讲解...
  8. 1、体脂手环、体脂秤等产品的体脂测量原理及技术方案分析
  9. abiFilters
  10. 【重学Matlab】Note8 坐标轴相关小记