python pandas教程百家号_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 时间序列分析

如果你还想学习机器学习其他教程,点击这里即可~

你可以可以点击【机器学习】学习路径,照着路径学习机器学习~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python查看系统句柄数量_linux下查看系统进程占用的句柄数方法

---查看系统默认的最大文件句柄数,系统默认是1024# ulimit -n1024----查看当前进程打开了多少句柄数# lsof -n|awk {print $2}|sort|uniq -c|sort -nr|more131 2420457 2424457 24231   ........其中第一列是打开的句柄数,第二列是进程ID。可以根据ID号…

java静态变量实例变量_java中静态变量和实例变量的区别

实例变量:只有在创建了实例对象之后才会被分配空间,才可以使用静态变量:不需要创建实例对象就可以直接使用类名进行引用public class Different {public static int staticInt 0;//静态变量public int insInt 0;//实例变量public Different…

sql in里面可以放多少参数_如何从文本文件读入 SQL 参数

有时我们希望把参数列表分行存储在文本文件里,执行SQL时再拼到in函数里,从而查询出符合条件的记录。但SQL不能解析文本文件,直接拼到in函数里有困难,所以很多人先把文件导入数据库临时表,再用join语句做关联&#xff0…

java sca视频教程_如何进入Java SCA软件的开发

该文档是SCA Java项目的开发者指南l一般性指南l获取源代码l配置你的开发环境l构建二进制和源代码发布包l导入SCA模块到你的开发IDE环境中l理解SCA代码路径l编码指南l测试lMaven构建结构l报告遇到的问题和提供补丁l开发提示为Webapp样例代码生成Eclipse WTP Web工程为样例中的程…

谷歌浏览器32位安装包_谷歌浏览器发布紧急安全更新修复Blink内核中的任意代码执行漏洞...

上月底谷歌浏览器推送紧急安全更新对浏览器漏洞进行修复,当时谷歌浏览器博客并未公布漏洞的具体细节信息。蓝点网当时也在文章中称通常这种不公布漏洞的更新,都是比较严重的问题因此只有等多数用户修复后才会公开。现在多数能够自动更新的用户已经升级到…

java js webservice_java Web技术探路:js Ajax调用WebService

StuList new List();for (int i 0; i < 10; i){Student s new Student();s.Sid i 1;s.Name "Tom"s.Sid;s.Sex "男";s.Age i 1;StuList.Add(s);}return StuList;}}}注意&#xff1a;我们分别看一下这几个方法的签名&#xff0c;这很重要&#x…

python下载晚上excel_Python自动操控excel,一小时解决你一天的工作

过去&#xff0c;在很多金融、市场、行政的招聘中&#xff0c;面试官都会问一句&#xff1a;“你精通 EXCEL 吗&#xff1f;”但今天&#xff0c;他们可能更喜欢问&#xff1a;“你会 Python 吗&#xff1f;”越来越多的企业开始用 Python 处理数据&#xff0c;特别是金融、证券…

java 注释 过时_Java 注解

前言为什么需要学习注解?1.能够灵活地使用框架提供的注解,最后能够读懂框架的源码2.能够配合反射将代码书写更加的灵活,更加易于维护易于扩展,Properties配置,XML配置,注解配置[Java配置]3.极大程度地简化了代码,提高了代码的可读性注解的概述Java提供了一种源程序中元素和任何…

python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(1)

最近帮一个朋友做一个抓取淘宝直通车数据的小项目&#xff0c;感觉ython比较适合写爬虫程序&#xff0c;决定使用Python来做程序。首先是登陆程序&#xff0c;因为淘宝的登陆校验很复杂&#xff0c;所以不能直接使用命令行的形式输入账号密码。查阅资料后&#xff0c;发现可以使…

java的serversocket_Java ServerSocket 实现聊天室功能(简易版)

大体实现功能可以选择房间&#xff0c;可以与房间中的用户进行实时的交流说在前面的话:serverSocket.accept() 会形成阻塞scanner.hasNextLine() 和 scanner.nextLine() 也会形成阻塞windows 下需要打开telnet服务。请自行百度实现思路:用户连接上服务器后选择房间号&#xff0…

python爬虫验证码的识别_Python爬虫识别验证码

Python爬虫识别验证码安装tesserocrpip3 install tesserocr pillow识别测试将验证码图片放到项目根目录下&#xff0c;用tesserocr库识别该验证码&#xff0c;代码如下所示&#xff1a;import localelocale.setlocale(locale.LC_ALL, C)import tesserocrfrom PIL import Imagei…

python对象属性赋值_关于python对象 中dict属性赋值的疑问

下面这段代码 很奇怪把两个对象放在一个 list中然后循环操作两个对象 中 一个dict key的数值但是循环操作输出的时候发现两个对象的 值会叠加#!/usr/bin/env pythonclass test:base {score : 100}def setBase(self, score):self.base[score] scoredef addScore(self):self.se…

java mysql jsp分页代码_JSP实现数据库分页显示源代码例

JSP实现数据库分页显示源代码例2018-11-25分页显示数据库信息分页显示数据库记录用户名性别电话E-Mailtry{//驱动程序名String driverName"sun.jdbc.odbc.JdbcOdbcDriver";//连接字符串String url"jdbc:odbc:userdata";//加载驱动程序Class.forName(driver…

java解压zip异常_java解压zip文件示例

若是使用Java自带的压缩工具包来实现解压缩文件到指定文件夹的功能&#xff0c;因为jdk提供的zip只能按UTF-8格式处理&#xff0c;而Windows系统中文件名是以GBK方式编码的&#xff0c;所以如果是解压一个包含中文文件名的zip包&#xff0c;会报非法参数异常&#xff0c;所以要…

ensp删除所有命令_HCIA学习笔记——eNSP配置NAT技术

今天用华为的eNSP做了关于NAT的实验&#xff0c;我把它发了出来&#xff0c;有需要的小伙伴可以收藏一下。分别配置了静态的NAT&#xff0c;NAT Outbound配置&#xff0c;Easy IP配置&#xff0c;NAT server配置。接口配置如图所示。在网关路由器上配置访问外网的默认路由。配置…

java怎么设置背景_如何在Java中设置背景图片?

小编典典根据应用程序或小程序是使用AWT还是Swing&#xff0c;答案会略有不同。(基本上&#xff0c;以J诸如JApplet和JFrame为开头的类是Swing和Appletand Frame是AWT。)无论哪种情况&#xff0c;基本步骤都是&#xff1a;将图像绘制或加载到Image对象中。在要绘制背景的绘画事…

python调用selenium的get_Python – selenium webdriver在循环中停留在.get()

我有一个Python代码片段,它使用Selenium Webdriver来循环一些历史性的棒球赔率.代码的第一部分旨在从调度表(包含大约57个需要循环的页面)中获取所有单独的游戏URL,并将它们存储在列表中.我第一次测试它它工作得很好 – 现在,无论出于何种原因,driver.get()函数似乎无法正常工作…

java什么叫元素_什么是Java做什么 - 每个元素使它们成为对象类型?

这个问题关于如何处理Java for-each循环中的元素。我有一个哈希表&#xff0c;它是一个LinkedLists数组。 LinkedList节点的数据部分包含TableEntry&#xff0c;其中K和V是键和值类型。我写了一个for循环来查看LinkedList中的每个TableEntry&#xff0c;检查一个键是否等于Tabl…

python读取dicom文件的包_python 读取DICOM头文件的实例

用dicompyler软件打开dicom图像&#xff0c;头文件如图所示&#xff1a;当然也可以直接读取&#xff1a;ds dicom.read_file(H:Datadata216622.16.840.1.113662.2.0.105002416.1489146183.701CTCT#0#21662#E7AB693D.dcm)print ds>>(0008, 0008) Image Type CS: [ORIGINA…

java程序员用代码写的情书_用代码写的三行情诗,你懂得程序员的浪漫吗?

原标题&#xff1a;用代码写的三行情诗&#xff0c;你懂得程序员的浪漫吗&#xff1f;在一般人眼里&#xff0c;程序员是一群古板&#xff0c;技术宅&#xff0c;不懂得浪漫的屌丝&#xff0c;但其实这些大神们浪漫起来也是相当可以的&#xff01;下面让我们来看一下程序员们用…