Pandas 常见的基本方法
说明:文章所有内容均截选自实验楼教程【Pandas 使用教程】,想要查看教程完整内容,点击教程即可~
前言:
Pandas 是非常著名的开源数据处理工具,我们可以通过它对数据集进行快速读取、转换、过滤、分析等一系列操作。除此之外,Pandas 拥有强大的缺失数据处理与数据透视功能,可谓是数据预处理中的必备利器。文章带你学会 Pandas 中的一些常用的基本方法。
知识点:
- 数据读取与存储
- Head & Tail
- 统计方法
- 计算方法
- 标签对齐
- 排序
数据文件:
学习本课程之前,请先打开在线环境终端,下载本文可能会用到的两个数据文件。
wget http://labfile.oss.aliyuncs.com/courses/906/los_census.csv
wget http://labfile.oss.aliyuncs.com/courses/906/los_census.txt
两个文件均为为洛杉矶人口普查数据,仅格式有区别。
下面的内容均在 iPython 交互式终端中演示,你可以通过在线环境左下角的应用程序菜单 > 附件打开。如果你在本地进行练习,推荐使用 Jupyter Notebook 环境。
Pandas 常见的基本方法
1 数据读取与存储
Pandas 支持大部分常见数据文件读取与存储。一般清楚下,读取文件的方法以 pd.read_
开头,而写入文件的方法以 pd.to_
开头。详细的表格如下。
拿刚刚下载好的数据文件举例,如果没有下载,请看文章开头的数据文件的获取方法。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df
可以看到,文件已经读取出来了。由于列数太多,所以分段显示了。输出的最下方会有一个行数和列数的统计。这里是 319 行 X 7 列。
我们可以发现,由 pandas 读取的文件就已经是 DataFrame 结构了。上面演示了 csv 文件的读取,其余格式的文件也很相似。
不过,很多时候我们拿到手的数据是像 los_census.txt
文件样式的数据,如下图所示。
import pandas as pd
df = pd.read_table("los_census.txt") #读取 txt 文件
print df
其实 los_census.txt
也就是 los_census.csv
文件,因为 csv
文件又叫逗号分隔符文件,数据之间采用逗号分割。
那么,我们怎样将这种文件转换为 DataFrame 结构的数据呢?这里就要使用到读取方法中提供的一些参数了,例如 sep[]
分隔符参数。
import pandas as pd
df = pd.read_table("los_census.txt", sep=',') #读取 txt 文件
print df
除了 sep
,读取文件时常用的参数还有:
header=
,用来选择将第几行作为列索引名称。names=[]
,自定义列索引名称。
例如:
import pandas as pd
df = pd.read_csv("los_census.csv", header=1 ) #将第二行作为列索引名称。
print df
import pandas as pd
df = pd.read_csv("los_census.csv", names=['A', 'B', 'C', 'D', 'E', 'F', 'G']) #自定义列索引名称。
print df
好了,说了这么久的读取文件,再说一说存储文件。存储文件的方法也很简单。比如我们将 los_census.csv
文件,存储为 json
格式的文件。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
df.to_json("1.json") # 将其存储为 json 格式文件
当然,你也可以通过 to_excel("1.xlsx")
储存为 Excel 默认支持的 .xlsx
格式。只是,需要注意在线环境会报错。这时候需要再补充安装 openpyxl
包就好了:
sudo pip install openpyxl
2 Head & Tail
有些时候,我们读取的文件很大。如果全部输出预览这些文件,既不美观,又很耗时。还好,Pandas 提供了 head()
和 tail()
方法,它可以帮助我们只预览一小块数据。
顾名思义,head()
方法就是从数据集开头预览,不带参数默认显示头部的 5 条数据,你也可以自定义显示条数。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df.head() # 默认显示前 5 条
print df.head(7) # 显示前 7 条
tail()
方法就是从数据集尾部开始显示了,同样默认 5 条,可自定义。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df.tail() # 默认显示后 5 条
print df.tail(7) # 显示后 7 条
3 统计方法
Pandas 提供了几个统计和描述性方法,方便你从宏观的角度去了解数据集。
1). describe()
describe()
相当于对数据集进行概览,会输出该数据集的计数、最大值、最小值等。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df.describe()
例如上面,针对一个 DataFrame 会对每一列的数据单独统计。
2). idxmin() & idxmax()
idxmin()
和 idxmax()
会计算最小、最大值对应的索引标签。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df.idxmin()
print df.idxmax()
3). count()
count()
用于统计非空数据的数量。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df.count()
4). value_counts()
value_counts()
仅仅针对 Series,它会计算每一个值对应的数量统计。
import pandas as pd
import numpy as np
s = pd.Series(np.random.randint(0, 9, size=100)) # 生成一个 Series,并在 0-9 之间生成 100 个随机值。
print s
print s.value_counts()
4 计算方法
除了统计类的方法,Pandas 还提供了很多计算类的方法。
1). sum()
sum()
用于计算数值数据的总和。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df.sum()
2). mean()
mean()
用于计算数值数据的平均值。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df.mean()
3). median()
median()
用于计算数值数据的算术中值。
import pandas as pd
df = pd.read_csv("los_census.csv") #读取 csv 文件
print df.median()
除此之外,剩下的一些常见计算方法如下表所示。
5 标签对齐
索引标签是 Pandas 中非常重要的特性,有些时候,由于数据的缺失等各种因素导致标签错位的现象,或者想匹配新的标签。于是 Pandas 提供了索引标签对齐的方法 reindex()
。
reindex()
主要有三个作用:
- 重新排序现有数据以匹配新的一组标签。
- 在没有标签对应数据的位置插入缺失值(NaN)标记。
- 特殊情形下,使用逻辑填充缺少标签的数据(与时间序列数据高度相关)。
import pandas as pd
s = pd.Series(data=[1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print s
print s.reindex(['e', 'b', 'f', 'd'])
我们可以看到,重新排列的数据中,原有索引对应的数据能自动匹配,而新索引缺失的数据通过 NaN
补全。
当然,对于 DataFrame 类型的数据也是一样的。
import pandas as pd
df = pd.DataFrame(data={'one': [1, 2, 3], 'two': [4, 5, 6], 'three': [7, 8, 9]}, index=['a', 'b', 'c'])
print df
print df.reindex(index=['b', 'c', 'a'], columns=['three', 'two', 'one'])
你甚至还可以将上面 Series 的数据按照下面的 DataFrame 的索引序列对齐。
print s.reindex(df.index)
6 排序
既然是数据处理,就少不了排序这一常用的操作。在 Pandas 中,排序拥有很多「姿势」,下面就一起来看一看。
1). 按索引排序
首先是按照索引排序,其方法为Series.sort_index()
或者是 DataFrame.sort_index()
。
import pandas as pd
df = pd.DataFrame(data={'one': [1, 2, 3], 'two': [4, 5, 6], 'three': [7, 8, 9], 'four': [10, 11, 12]}, index=['a', 'c', 'b'])
print df
下面按索引对行重新排序:
print df.sort_index()
或者添加参数,进行倒序排列:
print df.sort_index(ascending=False)
2). 按数值排序
第二种是按照数值排序,其方法为Series.sort_values()
或者是 DataFrame.sort_values()
。举个例子:
import pandas as pd
df = pd.DataFrame(data={'one': [1, 2, 3, 7], 'two': [4, 5, 6, 9], 'three': [7, 8, 9, 2], 'four': [10, 11, 12, 5]}, index=['a', 'c', 'b','d'])
print df
将第三列按照从小到大排序:
print df.sort_values(by='three')
也可以同时按照两列:
print df[['one', 'two', 'three', 'four']].sort_values(by=['one','two'])
最后
文章带你熟悉了 Pandas 中一些基本方法,这些方法是针对数据集操作过程中经常遇到的。当然,由于不可能面面俱到,这里面提到的方法也只是冰山一角。在数据分析实践中,还需要多多依据需求查阅官方文档。
教程【Pandas 使用教程】总共5节,文章截选的是第2节内容,教程列表如下:
- Pandas 安装与数据结构
- Pandas 常用的基本方法
- Pandas 数据选择与过滤
- Pandas 进行缺失值处理
- Pandas 时间序列分析
- 如果你还想学习机器学习其他教程,点击这里即可~
- 你可以可以点击【机器学习】学习路径,照着路径学习机器学习~
Pandas 常见的基本方法的更多相关文章
- Pandas 常见操作详解
Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...
- Android中ListView的几种常见的优化方法
Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapte ...
- 理解 OpenStack + Ceph (7): Ceph 的基本操作和常见故障排除方法
本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...
- C语言中常见的排序方法
在C语言中,常见的排序方法有冒泡法,排序法,插入法等等.所谓的冒泡法,就是对一组数字进行从大到小或者从小到大的一种排序方法.主要就是相邻的数值相互交换.从第一个数值开始,如果这相邻的两个数值排序与我们 ...
- C# 加密总结 一些常见的加密方法
C# 加密总结 一些常见的加密方法 一 散列数据 代码如下: ? private static string CalculateSHA512Hash(string input) { ...
- JavaScript基础:BOM的常见内置方法和内置对象
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. BOM的介绍 JavaScript的组成 JavaScript基础分为三 ...
- SQLMAP注入教程-11种常见SQLMAP使用方法详解
sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了.今天把我一直 ...
- Hbase常见错误解决方法
Hbase常见错误解决方法 原文转载至:https://www.jianshu.com/p/5fd74812c56c 我是通过maven管理的依赖,直接修改maven依赖中hbase的版本就可以了 ...
- Spark程序运行常见错误解决方法以及优化
转载自:http://bigdata.51cto.com/art/201704/536499.htm Spark程序运行常见错误解决方法以及优化 task倾斜原因比较多,网络io,cpu,mem都有可 ...
随机推荐
- Ubuntu-18.04设置开机启动脚本
参考:https://www.cnblogs.com/defifind/p/9285456.html http://www.cnblogs.com/airdot/p/9688530.html s ...
- VS2015 工具箱 保存位置
我的文档\Visual Studio 2015\Settings\CurrentSettings.vssettings Environment_Toolbox 节点 <Category name ...
- Codeforces 977F - Consecutive Subsequence - [map优化DP]
题目链接:http://codeforces.com/problemset/problem/977/F 题意: 给定一个长度为 $n$ 的整数序列 $a[1 \sim n]$,要求你找到一个它最长的一 ...
- [No0000DA]WPF ControlTemplate简介
一.简介 WPF包含数据模板和控件模板,其中控件模板又包括ControlTemplate和ItemsPanelTemplate,这里讨论一下ControlTemplate.其实WPF的每一个控件都有一 ...
- vsftpd服务安装配置
服务器:centos6.5 32位 192.168.1.114 1.安装 yum -y install vsftpd 2.启动 /etc/init.d/vsftpd start 3.配置 配置文件 ...
- Hash算法解决冲突的方法
https://blog.csdn.net/feinik/article/details/54974293 Hash算法解决冲突的方法一般有以下几种常用的解决方法1, 开放定址法:所谓的开放定址法就是 ...
- HTML5上传文件显示进度
下面我们使用Html 5的新特性file api实现上传文件,并显示上传文件进度百分比.意图是这样的,当选择文件时,显示当前文件信息.这里我们是结合Asp.net MVC做为服务端,您也可以是其它的服 ...
- 2018/09/13《涂抹MySQL》【MySQL复制特性】学习笔记(六)
推荐一首歌 - <可不可以>张紫豪 好吧,随便从排行榜上找了一首 读 第十一章<MySQL的复制特性> 总结 1:复制(Replication) 应用场景? - 提高性能 (通 ...
- tomcat在Eclipse中和idea中的使用
在eclipse中的使用 下载 http://tomcat.apache.org/ 部署项目到tomcat 常见问题 访问时如何出掉项目名 中文乱码问题 1.浏览器编码问题,修改浏览器的编码 2.js ...
- kubernetes的apiserver
1. API Server简介 k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心. ...