数据分析第一章:第一节至第三节
前言:datawhale团队贡献的课程——《动手学数据分析》,这门课程得主要目的是通过真实的数据,以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作。完成kaggle上泰坦尼克的任务,实战数据分析全流程。
资料:教材《Python for Data Analysis》
1 第一章:数据载入及初步观察
1.1 载入数据
数据集下载 https://www.kaggle.com/c/titanic/overview
1.1.1 任务一:导入numpy和pandas
import numpy as np
import pandas as pd
【提示】如果加载失败,学会如何在你的python环境下安装numpy和pandas这两个库
pip install numpy
pip install pandas
1.1.2 任务二:载入数据
(1) 使用相对路径载入数据
(2) 使用绝对路径载入数据
train = pd.read_csv("train.csv")
train.head()
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
train = pd.read_csv("C:/Users/JJY/Desktop/hands-on-data-analysis-master/第一单元项目集合/train.csv",engine='python')
train.head()
#调用pandas的read_csv()方法时,默认使用C engine作为parser engine,而当文件名中含有中文的时候就会出错,需要指定engine为Python。
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
【提示】相对路径载入报错时,尝试使用os.getcwd()查看当前工作目录。
【思考】知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下’.tsv’和’.csv’的不同,如何加载这两个数据集?
【总结】加载的数据是所有工作的第一步,我们的工作会接触到不同的数据格式(eg:.csv;.tsv;.xlsx),但是加载的方法和思路都是一样的,在以后工作和做项目的过程中,遇到之前没有碰到的问题,要多多查资料吗,使用googel,了解业务逻辑,明白输入和输出是什么。
#read_table 默认"\t"(制表符)为分隔符,加载csv文件需要特别指定sep=","
#read_csv 默认是","(逗号)为分隔符train = pd.read_table("train.csv",sep=",")
train.head()
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
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.1.3 任务三:每1000行为一个数据模块,逐块读取
chunker = pd.read_csv("train.csv",chunksize=1000)
print(type(chunker)) #chunker(数据块)的类型:可迭代的对象TextFileReader#执行后结果篇幅过长,故注释
#for i in chunker:
# print(i)
<class 'pandas.io.parsers.TextFileReader'>
【思考】什么是逐块读取?为什么要逐块读取呢?
–按指定大小分块读取大数据,避免因数据量大导致内存不足,但也会更耗时一些,数据的处理和清洗经常使用分块的方式处理
1.1.4 任务四:将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据]
PassengerId => 乘客ID
Survived => 是否幸存
Pclass => 乘客等级(1/2/3等舱位)
Name => 乘客姓名
Sex => 性别
Age => 年龄
SibSp => 堂兄弟/妹个数
Parch => 父母与小孩个数
Ticket => 船票信息
Fare => 票价
Cabin => 客舱
Embarked => 登船港口
train = pd.read_csv("train.csv", names=["乘客ID","是否幸存","乘客等级","姓名","性别","年龄","堂兄弟/妹个数","父母子女个数","船票信息","票价","客舱","登船港口"],index_col="乘客ID",header=0)
train.head()
是否幸存 | 乘客等级 | 姓名 | 性别 | 年龄 | 堂兄弟/妹个数 | 父母子女个数 | 船票信息 | 票价 | 客舱 | 登船港口 | |
---|---|---|---|---|---|---|---|---|---|---|---|
乘客ID | |||||||||||
1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S |
2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th... | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S |
4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S |
5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S |
1.2 初步观察
导入数据后,你可能要对数据的整体结构和样例进行概览,比如说,数据大小、有多少列,各列都是什么格式的,是否包含null等
1.2.1 任务一:查看数据的基本信息
train.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 1 to 891
Data columns (total 11 columns):
是否幸存 891 non-null int64
乘客等级 891 non-null int64
姓名 891 non-null object
性别 891 non-null object
年龄 714 non-null float64
堂兄弟/妹个数 891 non-null int64
父母子女个数 891 non-null int64
船票信息 891 non-null object
票价 891 non-null float64
客舱 204 non-null object
登船港口 889 non-null object
dtypes: float64(2), int64(4), object(5)
memory usage: 83.5+ KB
#【提示】有多个函数可以这样做,你可以做一下总结
#查看缺失值
train.isnull().sum(axis=0)
是否幸存 0
乘客等级 0
姓名 0
性别 0
年龄 177
堂兄弟/妹个数 0
父母子女个数 0
船票信息 0
票价 0
客舱 687
登船港口 2
dtype: int64
1.2.2 任务二:观察表格前10行的数据和后15行的数据
train.head(10)
是否幸存 | 乘客等级 | 姓名 | 性别 | 年龄 | 堂兄弟/妹个数 | 父母子女个数 | 船票信息 | 票价 | 客舱 | 登船港口 | |
---|---|---|---|---|---|---|---|---|---|---|---|
乘客ID | |||||||||||
1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S |
2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th... | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S |
4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S |
5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S |
6 | 0 | 3 | Moran, Mr. James | male | NaN | 0 | 0 | 330877 | 8.4583 | NaN | Q |
7 | 0 | 1 | McCarthy, Mr. Timothy J | male | 54.0 | 0 | 0 | 17463 | 51.8625 | E46 | S |
8 | 0 | 3 | Palsson, Master. Gosta Leonard | male | 2.0 | 3 | 1 | 349909 | 21.0750 | NaN | S |
9 | 1 | 3 | Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) | female | 27.0 | 0 | 2 | 347742 | 11.1333 | NaN | S |
10 | 1 | 2 | Nasser, Mrs. Nicholas (Adele Achem) | female | 14.0 | 1 | 0 | 237736 | 30.0708 | NaN | C |
train.tail(15)
是否幸存 | 乘客等级 | 姓名 | 性别 | 年龄 | 堂兄弟/妹个数 | 父母子女个数 | 船票信息 | 票价 | 客舱 | 登船港口 | |
---|---|---|---|---|---|---|---|---|---|---|---|
乘客ID | |||||||||||
877 | 0 | 3 | Gustafsson, Mr. Alfred Ossian | male | 20.0 | 0 | 0 | 7534 | 9.8458 | NaN | S |
878 | 0 | 3 | Petroff, Mr. Nedelio | male | 19.0 | 0 | 0 | 349212 | 7.8958 | NaN | S |
879 | 0 | 3 | Laleff, Mr. Kristo | male | NaN | 0 | 0 | 349217 | 7.8958 | NaN | S |
880 | 1 | 1 | Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) | female | 56.0 | 0 | 1 | 11767 | 83.1583 | C50 | C |
881 | 1 | 2 | Shelley, Mrs. William (Imanita Parrish Hall) | female | 25.0 | 0 | 1 | 230433 | 26.0000 | NaN | S |
882 | 0 | 3 | Markun, Mr. Johann | male | 33.0 | 0 | 0 | 349257 | 7.8958 | NaN | S |
883 | 0 | 3 | Dahlberg, Miss. Gerda Ulrika | female | 22.0 | 0 | 0 | 7552 | 10.5167 | NaN | S |
884 | 0 | 2 | Banfield, Mr. Frederick James | male | 28.0 | 0 | 0 | C.A./SOTON 34068 | 10.5000 | NaN | S |
885 | 0 | 3 | Sutehall, Mr. Henry Jr | male | 25.0 | 0 | 0 | SOTON/OQ 392076 | 7.0500 | NaN | S |
886 | 0 | 3 | Rice, Mrs. William (Margaret Norton) | female | 39.0 | 0 | 5 | 382652 | 29.1250 | NaN | Q |
887 | 0 | 2 | Montvila, Rev. Juozas | male | 27.0 | 0 | 0 | 211536 | 13.0000 | NaN | S |
888 | 1 | 1 | Graham, Miss. Margaret Edith | female | 19.0 | 0 | 0 | 112053 | 30.0000 | B42 | S |
889 | 0 | 3 | Johnston, Miss. Catherine Helen "Carrie" | female | NaN | 1 | 2 | W./C. 6607 | 23.4500 | NaN | S |
890 | 1 | 1 | Behr, Mr. Karl Howell | male | 26.0 | 0 | 0 | 111369 | 30.0000 | C148 | C |
891 | 0 | 3 | Dooley, Mr. Patrick | male | 32.0 | 0 | 0 | 370376 | 7.7500 | NaN | Q |
1.2.4 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False
train.isnull().head()
是否幸存 | 乘客等级 | 姓名 | 性别 | 年龄 | 堂兄弟/妹个数 | 父母子女个数 | 船票信息 | 票价 | 客舱 | 登船港口 | |
---|---|---|---|---|---|---|---|---|---|---|---|
乘客ID | |||||||||||
1 | False | False | False | False | False | False | False | False | False | True | False |
2 | False | False | False | False | False | False | False | False | False | False | False |
3 | False | False | False | False | False | False | False | False | False | True | False |
4 | False | False | False | False | False | False | False | False | False | False | False |
5 | False | False | False | False | False | False | False | False | False | True | False |
【总结】上面的操作都是数据分析中对于数据本身的观察
1.3 保存数据
1.3.1 任务一:将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv
# 注意:不同的操作系统保存下来可能会有乱码。大家可以加入`encoding='GBK' 或者 ’encoding = ’utf-8‘‘`
train.to_csv("train_chinese.csv")
【总结】数据的加载以及入门,接下来就要接触数据本身的运算,我们将主要掌握numpy和pandas在工作和项目场景的运用。
1.4 知道你的数据叫什么
我们学习pandas的基础操作,那么上一节通过pandas加载之后的数据,其数据类型是什么呢?
开始前导入numpy和pandas
import numpy as np
import pandas as pd
1.4.1 任务一:pandas中有两个数据类型DateFrame和Series,通过查找简单了解他们。然后自己写一个关于这两个数据类型的小例子
数据分析第一章:第一节至第三节相关推荐
- 第一章 第一节:Python基础_认识Python
Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...
- 软件构造 第一章第二节 软件开发的质量属性
软件构造 第一章第二节 软件开发的质量属性 1.软件系统质量指标 External quality factors affect users 外部质量因素影响用户 Internal quality ...
- 自然语言和计算机语言二义性,二级C++精品课程第一章第一节计算机语言及其发展...
计算机是一个有用的工具,它能做许多事情,例如矩阵计算.方程求解.辅助设计等.要让计算机解决某一个问题之前,必须先把求解问题的步骤描述出来,这便称之为算法.下面是一个一元二次方程求根的算法实例: ◇ 计 ...
- 初步使用计算机教案ppt,第一章 第一节 初识计算机程序(课件+教案+素材)
第一章 第一节 初识计算机程序(课件+教案+素材) ==================资料简介====================== 第一节 初识计算机程序:28张PPT ~$第一节 认识智能 ...
- 《网络是怎样连接的》第一章第二节:向DNS服务器查询Web服务器的IP地址
<网络是怎样连接的>第一章:浏览器生成消息 概述:这本书以 "从在浏览器输入网址,到屏幕显示出网页,当中到底发生了什么?"为疑问,探究其中的过程.本章讲的是浏览器怎么把 ...
- Datawhale数据分析第一章第二节:Pandas基础
复习:数据分析的第一步,加载数据我们已经学习完毕了.当数据展现在我们面前的时候,我们所要做的第一步就是认识他,今天我们要学习的就是了解字段含义以及初步观察数据. 1 第一章:数据载入及初步观察 1.4 ...
- 粤教版小学认识计算机教案,粤教版八年级信息技术下册教案:第一章第一节初识计算机程序oc.pdf...
WORD格式 可编辑 八级下 B版信息技术 VB课程全套教案(粤教版) 时间: 课题 <感受程序设计的魅--初识计算机程序> 一.教学内容分析和设计: 本节课教学内容为第二册下第一章感受程 ...
- 第一章 第一节 可充当主语的词类
第一章 句子的构成 任何一个句子一定是由主语及动词构成 S+V 有时主语可以省略,而构成了祈使句.这种祈使句由原形动词(也称为动词不定式)引出. 祈使句变成否定形式时,要在原形动词前加Don't 第一 ...
- 高等数学精讲01 第一章第一节 函数
第一章 函数,极限,连续 概要: 函数:高等数学研究的主要对象 极限(重点难点):用来研究函数的工具,重要概念都是极限用来定义的,连续,导数,定积分 连续性:研究的第一个基本形态 第一节 函数 主要内 ...
- 高等数学精讲02 第一章第二节 极限01
第二节 极限 概要: 极限是用来研究函数的工具,整个第一章的重点和难点. 主要内容 选择题和证明题: 一.极限的概念 二.极限的性质 三.极限的存在准则 极限的极端状态: 四.无穷小 五.无穷大量 主 ...
最新文章
- Python的XML解析!
- 路由器固件下的小试牛刀,与漏洞相关的经验分享
- Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)
- php实现二叉搜索树,二叉搜索树有几种实现方式
- 取木棒21根c语言,关于m根火柴 ,人机最多取n根火柴(21根火柴进阶)
- java不朽神迹,不朽的神迹 Eternal Legacy HD v1.0.8
- dijkstra算法代码_深度好文:改变了我们生活方式最有影响力的5种图算法
- VMware设置及linux静态ip设置
- ajax响应码,jQuery 使用$ .ajax()处理HTTP响应代码
- 如何自动申请京东试用商品、签到获取京豆
- 机器翻译市场需求调研报告
- C语言实现字符串转数字(包括负数)
- linux 平台下 MATLAB 打不开图形界面
- 熬夜淦了近 3W 字的 Docker 教程,从入门到精通(建议收藏)
- 【OpenCV + Python】之bitwise_and、bitwise_not,bitwise_xor等图像基本运算(opencv位操作)
- Git GUI Here 设置成中文界面
- 明解C语言入门篇_第10章_指针
- 超声波风速风向传感器的测量原理
- windows下ssh server搭建方法
- FPGA流水灯(间隔1S)
热门文章
Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...
软件构造 第一章第二节 软件开发的质量属性 1.软件系统质量指标 External quality factors affect users 外部质量因素影响用户 Internal quality ...
计算机是一个有用的工具,它能做许多事情,例如矩阵计算.方程求解.辅助设计等.要让计算机解决某一个问题之前,必须先把求解问题的步骤描述出来,这便称之为算法.下面是一个一元二次方程求根的算法实例: ◇ 计 ...
第一章 第一节 初识计算机程序(课件+教案+素材) ==================资料简介====================== 第一节 初识计算机程序:28张PPT ~$第一节 认识智能 ...
<网络是怎样连接的>第一章:浏览器生成消息 概述:这本书以 "从在浏览器输入网址,到屏幕显示出网页,当中到底发生了什么?"为疑问,探究其中的过程.本章讲的是浏览器怎么把 ...
复习:数据分析的第一步,加载数据我们已经学习完毕了.当数据展现在我们面前的时候,我们所要做的第一步就是认识他,今天我们要学习的就是了解字段含义以及初步观察数据. 1 第一章:数据载入及初步观察 1.4 ...
WORD格式 可编辑 八级下 B版信息技术 VB课程全套教案(粤教版) 时间: 课题 <感受程序设计的魅--初识计算机程序> 一.教学内容分析和设计: 本节课教学内容为第二册下第一章感受程 ...
第一章 句子的构成 任何一个句子一定是由主语及动词构成 S+V 有时主语可以省略,而构成了祈使句.这种祈使句由原形动词(也称为动词不定式)引出. 祈使句变成否定形式时,要在原形动词前加Don't 第一 ...
第一章 函数,极限,连续 概要: 函数:高等数学研究的主要对象 极限(重点难点):用来研究函数的工具,重要概念都是极限用来定义的,连续,导数,定积分 连续性:研究的第一个基本形态 第一节 函数 主要内 ...
第二节 极限 概要: 极限是用来研究函数的工具,整个第一章的重点和难点. 主要内容 选择题和证明题: 一.极限的概念 二.极限的性质 三.极限的存在准则 极限的极端状态: 四.无穷小 五.无穷大量 主 ...