学习数据分析,首先读取保存数据,知道基本的数据结构,对数据的含义及相关操作有个认识。
Chapter 1: 数据载入及初步观察
1.1 载入数据
1.1.1 任务一:导入numpy和pandas
额外导入os模块,方便之后运行os.getcwd()查询文件地址
1.1.2 任务二:载入数据
(1) 使用相对路径载入数据
(2) 使用绝对路径载入数据
知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下'.tsv'和'.csv'的不同,如何加载这两个数据集?
1.1.3 任务三:每1000行为一个数据模块,逐块读取
1.1.4 任务四:将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据
1.2 初步观察
导入数据后,你可能要对数据的整体结构和样例进行概览,比如说,数据大小、有多少列,各列都是什么格式的,是否包含null等
1.2.1 任务一:查看数据的基本信息
1.2.2 任务二:观察表格前10行的数据和后15行的数据
1.2.4 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False
1.3 保存数据
1.3.1 任务一:将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv
Chapter 2: Pandas 基础
1.4 知道你的数据叫什么
我们学习pandas的基础操作,那么上一节通过pandas加载之后的数据,其数据类型是什么呢?
1.4.1 任务一:pandas中有两个数据类型DateFrame和Series,通过查找简单了解他们。然后自己写一个关于这两个数据类型的小例子🌰[开放题]
pd.Series(np.random.randint(10,100,5))
pd.DataFrame(np.random.randint(10,100,5),
columns=['a'])
1.4.2 任务二:根据上节课的方法载入"train.csv"文件
#写入代码
csv=pd.read_csv("train.csv")
csv.head(5)
1.4.3 任务三:查看DataFrame数据的每列的名称
#写入代码
#查看每一列的名称
csv.columns
#查看每一行的名称
csv.index
1.4.4任务四:查看"Cabin"这列的所有值[有多种方法]
#写入代码
#方法一:字典模式
csv['Cabin']
#方法二:属性模式
csv.Cabin
#方法三:loc
csv.loc[:,'Cabin']
#方法四, 多列
csv.loc[:,'Sex':'Cabin']
csv.loc[:,['Sex','Cabin']]
csv[['Sex','Cabin']]
1.4.5 任务五:加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除
经过我们的观察发现一个测试集test_1.csv有一列是多余的,我们需要将这个多余的列删去
#写入代码
test = pd.read_csv("test_1.csv")
del test['a']
test
【思考】还有其他的删除多余的列的方式吗?
#方法一:
test = test.drop(columns= 'a')
#方法二:
test=test.drop(['a'],axis=1)
1.4.6 任务六: 将['PassengerId','Name','Age','Ticket']这几个列元素隐藏,只观察其他几个列元素
test = test.drop(['PassengerId','Name','Age','Ticket'],axis=1)
test.head(3)
1.5 筛选的逻辑
表格数据中,最重要的一个功能就是要具有可筛选的能力,选出我所需要的信息,丢弃无用的信息。
下面我们还是用实战来学习pandas这个功能。
1.5.1 任务一: 我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
#写入代码
test[test['Age']<10].head(3)
1.5.2 任务二: 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = test[(test['Age']>10) & (test['Age']<50)]
midage
1.5.3 任务三:将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
#写入代码
midage.reset_index(drop=True)
midage.loc[[100],["Pclass","Sex"]]
1.5.4 任务四:使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
#写入代码
midage.loc[[100,105,108],["Pclass",'Name',"Sex"]]
1.5.5 任务五:使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
#写入代码
midage.iloc[[100,105,108],[3,4,5]]
Chapter 3: 探索性数据分析
我们要学习的就是探索性数据分析,主要介绍如何利用Pandas进行排序、算术计算以及计算描述函数describe()的使用。
1.6 了解你的数据吗?
1.6.1 任务一:利用Pandas对示例数据进行排序,要求升序
df = pd.DataFrame(np.arange(8).reshape((2, 4)),
index=[2,1],
columns=['d', 'a', 'b', 'c'])
#1.让行索引升序排序
df.sort_index()
#2.让列索引升序排序
df.sort_index(ascending=True,axis=1)
#3.让列索引降序排序
df.sort_index(ascending=False,axis=1)
#4.让任选两列数据同时降序排序
df.sort_values(by=['b','c'],ascending= False)
1.6.2 任务二:对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从这个数据中你可以分析出什么
#在开始我们已经导入了train_chinese.csv数据,而且前面我们也学习了导入数据过程.
根据上面学习,我们直接对目标列进行排序即可
csv = pd.read_csv("train_chinese.csv")
csv.sort_values(by=['票价','年龄'],ascending=False).head(20)
1.6.3 任务三:利用Pandas进行算术计算,计算两个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'])
#将frame_a和frame_b进行相加
frame1_a+frame1_b
1.6.4 任务四:通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
max(csv["兄弟姐妹个数"]+csv["父母子女个数"])
#年龄的极差是否有关系
max(csv['年龄'])-min(csv['年龄'])
#最小的乘客是否能逃生
min(csv['年龄'])
#年龄低的乘客生存情况
csv.sort_values(by=['年龄'],ascending=True)
1.6.5 任务五:学会使用Pandas describe()函数查看数据基本统计信息
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.describe()
1.6.6 任务六:分别看看泰坦尼克号数据集中 票价、父母子女 这列数据的基本统计数据,你能发现什么?
csv['票价'].describe()
csv['父母子女个数'].describe()