前言: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,通过查找简单了解他们。然后自己写一个关于这两个数据类型的小例子

数据分析第一章:第一节至第三节相关推荐

  1. 第一章 第一节:Python基础_认识Python

    Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...

  2. 软件构造 第一章第二节 软件开发的质量属性

    ​软件构造 第一章第二节 软件开发的质量属性 1.软件系统质量指标 External quality factors affect users 外部质量因素影响用户 Internal quality ...

  3. 自然语言和计算机语言二义性,二级C++精品课程第一章第一节计算机语言及其发展...

    计算机是一个有用的工具,它能做许多事情,例如矩阵计算.方程求解.辅助设计等.要让计算机解决某一个问题之前,必须先把求解问题的步骤描述出来,这便称之为算法.下面是一个一元二次方程求根的算法实例: ◇ 计 ...

  4. 初步使用计算机教案ppt,第一章 第一节 初识计算机程序(课件+教案+素材)

    第一章 第一节 初识计算机程序(课件+教案+素材) ==================资料简介====================== 第一节 初识计算机程序:28张PPT ~$第一节 认识智能 ...

  5. 《网络是怎样连接的》第一章第二节:向DNS服务器查询Web服务器的IP地址

    <网络是怎样连接的>第一章:浏览器生成消息 概述:这本书以 "从在浏览器输入网址,到屏幕显示出网页,当中到底发生了什么?"为疑问,探究其中的过程.本章讲的是浏览器怎么把 ...

  6. Datawhale数据分析第一章第二节:Pandas基础

    复习:数据分析的第一步,加载数据我们已经学习完毕了.当数据展现在我们面前的时候,我们所要做的第一步就是认识他,今天我们要学习的就是了解字段含义以及初步观察数据. 1 第一章:数据载入及初步观察 1.4 ...

  7. 粤教版小学认识计算机教案,粤教版八年级信息技术下册教案:第一章第一节初识计算机程序oc.pdf...

    WORD格式 可编辑 八级下 B版信息技术 VB课程全套教案(粤教版) 时间: 课题 <感受程序设计的魅--初识计算机程序> 一.教学内容分析和设计: 本节课教学内容为第二册下第一章感受程 ...

  8. 第一章 第一节 可充当主语的词类

    第一章 句子的构成 任何一个句子一定是由主语及动词构成 S+V 有时主语可以省略,而构成了祈使句.这种祈使句由原形动词(也称为动词不定式)引出. 祈使句变成否定形式时,要在原形动词前加Don't 第一 ...

  9. 高等数学精讲01 第一章第一节 函数

    第一章 函数,极限,连续 概要: 函数:高等数学研究的主要对象 极限(重点难点):用来研究函数的工具,重要概念都是极限用来定义的,连续,导数,定积分 连续性:研究的第一个基本形态 第一节 函数 主要内 ...

  10. 高等数学精讲02 第一章第二节 极限01

    第二节 极限 概要: 极限是用来研究函数的工具,整个第一章的重点和难点. 主要内容 选择题和证明题: 一.极限的概念 二.极限的性质 三.极限的存在准则 极限的极端状态: 四.无穷小 五.无穷大量 主 ...

最新文章

  1. Python的XML解析!
  2. 路由器固件下的小试牛刀,与漏洞相关的经验分享
  3. Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)
  4. php实现二叉搜索树,二叉搜索树有几种实现方式
  5. 取木棒21根c语言,关于m根火柴 ,人机最多取n根火柴(21根火柴进阶)
  6. java不朽神迹,不朽的神迹 Eternal Legacy HD v1.0.8
  7. dijkstra算法代码_深度好文:改变了我们生活方式最有影响力的5种图算法
  8. VMware设置及linux静态ip设置
  9. ajax响应码,jQuery 使用$ .ajax()处理HTTP响应代码
  10. 如何自动申请京东试用商品、签到获取京豆
  11. 机器翻译市场需求调研报告
  12. C语言实现字符串转数字(包括负数)
  13. linux 平台下 MATLAB 打不开图形界面
  14. 熬夜淦了近 3W 字的 Docker 教程,从入门到精通(建议收藏)
  15. 【OpenCV + Python】之bitwise_and、bitwise_not,bitwise_xor等图像基本运算(opencv位操作)
  16. Git GUI Here 设置成中文界面
  17. 明解C语言入门篇_第10章_指针
  18. 超声波风速风向传感器的测量原理
  19. windows下ssh server搭建方法
  20. FPGA流水灯(间隔1S)

热门文章

  1. 【学习总结】LSD-SLAM配置与运行记录
  2. RealTime Linux
  3. 计算机毕业设计django基于python平面地图监控(源码+系统+mysql数据库+Lw文档)
  4. 将16位的深度图转换为8位深度图
  5. python 实现对 同比、环比、占比、贡献率、拉动率 、移动均值 等的计算(附详细代码和样例)
  6. phpems最低的php版本,PHPEMS安装使用操作文档
  7. 005我们身边的仓储物流自动技术
  8. 通信原理实验箱QY-JXSY48
  9. Java开发环境!杭州java开发应届生工资
  10. 区块链开发者观点:来自 Math(麦子钱包)的 Eric Yu