我是靠谱客的博主 感动发带,最近开发中收集的这篇文章主要介绍(三)pandas开源课程学习笔记——探索性数据分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

      • 开始之前,导入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是否幸存仓位等级姓名性别年龄兄弟姐妹个数父母子女个数船票信息票价客舱登船港口
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS

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
dabc
20123
14567

【代码解析】

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
dabc
20123
14567

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

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

1.让行索引升序排序

df.sort_index()
dabc
14567
20123

2.让列索引升序排序

df.sort_index(axis = 1)
abcd
21230
15674

3.让列索引降序排序

df.sort_index(axis = 1, ascending=False)
dcba
20321
14765

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

df.sort_values(['a','c'], ascending=[True, False])
dabc
20123
14567

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

df = pd.read_csv('train_chinese.csv')
df.sort_values(["票价", "年龄"], ascending=False).head(10)
乘客ID是否幸存仓位等级姓名性别年龄兄弟姐妹个数父母子女个数船票信息票价客舱登船港口
67968011Cardeza, Mr. Thomas Drake Martinezmale36.001PC 17755512.3292B51 B53 B55C
25825911Ward, Miss. Annafemale35.000PC 17755512.3292NaNC
73773811Lesurer, Mr. Gustave Jmale35.000PC 17755512.3292B101C
43843901Fortune, Mr. Markmale64.01419950263.0000C23 C25 C27S
34134211Fortune, Miss. Alice Elizabethfemale24.03219950263.0000C23 C25 C27S
888911Fortune, Miss. Mabel Helenfemale23.03219950263.0000C23 C25 C27S
272801Fortune, Mr. Charles Alexandermale19.03219950263.0000C23 C25 C27S
74274311Ryerson, Miss. Susan Parker "Suzette"female21.022PC 17608262.3750B57 B59 B63 B66C
31131211Ryerson, Miss. Emily Boriefemale18.022PC 17608262.3750B57 B59 B63 B66C
29930011Baxter, Mrs. James (Helene DeLaudeniere Chaput)female50.001PC 17558247.5208B58 B60C

【思考】排序后,如果我们仅仅关注年龄和票价两列。根据常识我知道发现票价越高的应该客舱越好,所以我们会明显看出,票价前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
abc
one0.01.02.0
two3.04.05.0
three6.07.08.0
frame1_b
aec
first0.01.02.0
one3.04.05.0
two6.07.08.0
second9.010.011.0

将frame_a和frame_b进行相加

frame1_a + frame1_b
abce
firstNaNNaNNaNNaN
one3.0NaN7.0NaN
secondNaNNaNNaNNaN
threeNaNNaNNaNNaN
two9.0NaN13.0NaN

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

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

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

df1 = df["兄弟姐妹个数"] + df["父母子女个数"]
df["家族人数"] = max(df1)
df[df1 == max(df1)]
乘客ID是否幸存仓位等级姓名性别年龄兄弟姐妹个数父母子女个数船票信息票价客舱登船港口家族人数
15916003Sage, Master. Thomas HenrymaleNaN82CA. 234369.55NaNS10
18018103Sage, Miss. Constance GladysfemaleNaN82CA. 234369.55NaNS10
20120203Sage, Mr. FrederickmaleNaN82CA. 234369.55NaNS10
32432503Sage, Mr. George John JrmaleNaN82CA. 234369.55NaNS10
79279303Sage, Miss. Stella AnnafemaleNaN82CA. 234369.55NaNS10
84684703Sage, Mr. Douglas BullenmaleNaN82CA. 234369.55NaNS10
86386403Sage, Miss. Dorothy Edith "Dolly"femaleNaN82CA. 234369.55NaNS10

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

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
onetwo
a1.40NaN
b7.10-4.5
cNaNNaN
d0.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开源课程学习笔记——探索性数据分析的全部内容,希望文章能够帮你解决(三)pandas开源课程学习笔记——探索性数据分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部