Python for Data Analysis 学习心得(三) - 文件读写和数据预处理
一、Pandas文件读写
pandas很核心的一个功能就是数据读取、导入,pandas支援大部分主流的数据储存格式,并在导入的时候可以做筛选、预处理。在读取数据时的选项有超过50个参数,可见pandas对于各式各样的数据都能有非常好的应对能力。下面先介绍基本的读取指令。

前面两个read_csv和read_table是用的比较多的两种。下面为实际操作的范例。


当然大部分的时候数据导入不会这么顺利,因为源数据里可能会有多种的分离方式,里面还会夹杂一些脏数据,所以pandas附上了一些选项来帮助导入的数据可以更整洁,像是上面就是用了sep选项将逗号“,”设定为分隔符号。pandas还可以自定索引、列名称等,这边就不逐个介绍,因为我在用的时候也不常去用这些功能,真的需要再查就可以了。下面列了一些比较常用的导入选项。也是需要的时候再查看就行。

当文件数据量很大的时候,我们有时候不想每次都将所有的数据显示出来,可以用下面的指令只显示前面5个和后面5个。

或是在读取的时候只读取前面几个,节省导入时间

Pandas文件导出
除了读取数据,pandas也可以将整理好的数据导出,指令为 to_csv

本书还提到了几种格式的数据导入导出,例如JSON、HTML、HDF5、EXCEL、SQL,我个人觉得看看就好,知道可以用pandas导入,等要用的时候再细看就好。
二、数据清洗
Pandas另外一个强大的功能就是对数据进行清洗和准备分析数据。在传统数据分析上面这个部分往往是最消耗时间的,因为许多行业的原始数据多多少少都会有些脏数据、缺失数据,如果没及时发现会影响整个分析的结果,而pandas提供的数据清洗工具都是由实际需求和问题转化而来的,基本上可以因应大部分数据清洗、准备遇到的问题。
1、缺失值
当表中数据缺失时,会用NaN来表示,对于缺失数据的操作,如下表所示,可以使用isnull来查是否有缺失,fillna将缺失值填入指定数据,dropna会丢弃含有NaN的行。

对于缺失数据的处理方式一般有三种,1、抛弃行 2、抛弃列 3、填充。dropna就是抛弃行的方式,但大部分的情况下,我们会希望我们的数据是完整、数量多的,所以填充是比较常见的处理方式,下面的指令就是将所有的缺失数据以“0”表示,取代NaN

也可以对每一列填上不同的填充数字,如下图,将1的列填上0.5,2的列填上0

另外一个常用的就是填入平均数,因为对于某些数据,例如商品价格,如果填入0可能对分析结果会有比较大的影像,而填入平均数则可以将缺失数据的影响降低。

2、重复数据
跟缺失数据一样,重复数据的处理指令也是有查看重复数据duplicated(),丢弃重复数据drop_duplicates(),也是有许多选项可以设定的。
3、数据映射
如果想要将两个表的数据合并,首先要先找到对应值,然后用map的方法join过去,下面范例由于其中一个表的对应值混有大写,所以要先对对应值进行处理(小写化),再投映过去,不然电脑会认为两边的对应值不同,造成部分数据投映不过去。当然,也可以投映过去后发现是哪些数据没有弄到,再查看原因解决也行。


4、数据替换
有些表会用其他元素取代NaN代表缺失数据,但这些预设的填充值可能会影响分析结果,所以需要先把这些数据替换成其他的数据,可以使用replace,下面就是将原本-999的数替换成NaN。

或是可以用字典的方式进行替换,下图是将-999替换为NaN,-1000替换成0

也可以对行列名称进行替换,这边用rename

5、排序和采样
在训练机器的时候,我们不希望将所有的数据都用来做训练,所以必须要做采样,代码为下,n为采样数。

但是随机采样有可能采集到的数比较偏,不能代表整体,对此,我们必须先做分层,并在每层按比例采取样本,训练出的结果会比较符合群体。pandas提供了cut这个功能来对样本进行分层,分层最重要的是以哪个维度作为分层的依据,下面的代码依照年龄作为分层的依据。

6、检测和过滤异常
用describe()可以将数据做简单的统计展示,如下

然后可以输入一些条件指令来检查是否有符合条件的数据,如下图是检查是否有绝对值大于3的数

Python for Data Analysis 学习心得(三) - 文件读写和数据预处理的更多相关文章
- Python for Data Analysis 学习心得(一) - numpy介绍
一.简介 Python for Data Analysis这本书的特点是将numpy和pandas这两个工具介绍的很详细,这两个工具是使用Python做数据分析非常重要的一环,numpy主要是做矩阵的 ...
- Python for Data Analysis 学习心得(二) - pandas介绍
一.pandas介绍 本篇程序上篇内容,在numpy下面继续介绍pandas,本书的作者是pandas的作者之一.pandas是非常好用的数据预处理工具,pandas下面有两个数据结构,分别为Seri ...
- Python for Data Analysis 学习心得(四) - 数据清洗、接合
一.文字处理 之前在练习爬虫时,常常爬了一堆乱七八糟的字符下来,当时就有找网络上一些清洗数据的方式,这边pandas也有提供一些,可以参考使用看看.下面为两个比较常见的指令,往往会搭配使用. spli ...
- 数据分析---《Python for Data Analysis》学习笔记【03】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 数据分析---《Python for Data Analysis》学习笔记【02】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 数据分析---《Python for Data Analysis》学习笔记【04】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 数据分析---《Python for Data Analysis》学习笔记【01】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 学习笔记之Python for Data Analysis
Python for Data Analysis, 2nd Edition https://www.safaribooksonline.com/library/view/python-for-data ...
- 《python for data analysis》第五章,pandas的基本使用
<利用python进行数据分析>一书的第五章源码与读书笔记 直接上代码 # -*- coding:utf-8 -*-# <python for data analysis>第五 ...
随机推荐
- css中background和 background-color 同时使用的优先级
给背景图片设置一个默认背景颜色,有以下两种方法: <style> .bg1{ background:url(http://debug.itxst.com/img/logo.png) red ...
- CODE FESTIVAL 2017 qual B D 101 to 010(dp)
除非人品好,能碰巧想到思路,否则基本是做不出来dp的,除了那几个经典的dp模型.. 看了几个前几名的代码,还是t神的代码比较清晰.膜tourist 代码的思路和题解思路基本一致..... #inclu ...
- Wood Processing牛客第十场 斜率优化DP
卧槽我感觉写的是对的,但是就是样例都过不了...留坑 #include<iostream> #include<stdio.h> #include<string.h> ...
- 带你进入 Activiti 工作流的世界
Activiti 是一个针对企业用户.开发人员 .系统管理员的轻量级工作流业务管理平台,其核心是使用 java 开发的快速 . 稳定的 BPMN2.0 流程引擎 .它可以与 spring 完美集成. ...
- 【codeforces 520B】Two Buttons
[题目链接]:http://codeforces.com/contest/520/problem/B [题意] 给你一个数n; 对它进行乘2操作,或者是-1操作; 然后问你到达m需要的步骤数; [题解 ...
- Pytest - 使用介绍
1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...
- CentOS 安装 semanage 命令
CentOS 安装 semanage 命令 在服务器上运行: [root@ca1 ~]# yum install policycoreutils-python vim /etc/selinux/con ...
- [转]C#中 ??、 ?、 ?: 、?.、?[ ] 问号
1. 可空类型修饰符(?) 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null; 编译器就会报错.为了使值类型也 ...
- element-ui-——el-uploadexcel导入
布局文件:(选择文件放在了弹框内部——即点击导入按钮后弹框显示,先下载模板再选择文件点击提交按钮才上传) )) { this.$notify({ message: '数据导入成功', type: 's ...
- CodeForces 1204E"Natasha, Sasha and the Prefix Sums"(动态规划 or 组合数学--卡特兰数的应用)
传送门 •参考资料 [1]:CF1204E Natasha, Sasha and the Prefix Sums(动态规划+组合数) •题意 由 n 个 1 和 m 个 -1 组成的 $C_{n+m} ...