Python pandas十分钟教程

Pandas是数据处理和数据分析中最流行的Python库。本文将为大家介绍一些有用的Pandas信息,介绍如何使用Pandas的不同函数进行数据探索和操作。 包括如何导入数据集以及浏览,选择,清理,索引,合并和导出数据等常用操作的函数使用,这是一个很好的快速入门指南,如果你已经学习过pandas,那么这将是一个不错的复习。

pandas导入与设置

一般在使用pandas时,我们先导入pandas库。

import pandas as pd

pandas在默认情况下,如果数据集中有很多列,则并非所有列都会显示在输出显示中。 您可以使用以下代码行来设置输出显示中的列数:

pd.set_option('display.max_columns', 500)

500表示列的最大宽度。 也就是说,500意味着在调用数据帧时最多可以显示500列。 默认值仅为50。此外,如果想要扩展输显示的行数。 可以通过如下代码进行设置:

pd.set_option('display.max_rows', 500)

读取数据集

导入数据是开始的第一步,使用pandas可以很方便的读取excel数据或者csv数据,使用代码如下:

pd.read_csv("Soils.csv")
pd.read_excel("Soils.xlsx")

在括号内 "Soils.csv"是上传的数据文件名,一般如果数据文件不在当前工作路径,则需要加上路径信息。如果读取的文件没有列名,需要在程序中设置header,举例如下:

pd.read_csv("Soils.csv",header=None)

如果碰巧数据集中有日期时间类型的列,那么就需要在括号内设置参数parse_dates = [column_name],以便Pandas可以将该列识别为日期。 例如,如果数据集中有一个名为Collection_Date的日期列,则读取代码如下:

pd.read_excel("Soils.xls", parse_dates = ['Collection_Date'])

以下是成功导入后的数据预览。

探索DataFrame

以下是查看数据信息的5个最常用的函数:

df.head():默认返回数据集的前5行,可以在括号中更改返回的行数。 示例: df.head(10)将返回10行。

df.tail():返回数据集的最后5行。同样可以在括号中更改返回的行数。

df.shape: 返回表示维度的元组。 例如输出(48,14)表示48行14列。

df.info():提供数据摘要,包括索引数据类型,列数据类型,非空值和内存使用情况。

df.describe():提供描述性统计数据。

统计某列数据信息

以下是一些用来查看数据某一列信息的几个函数:

df['Contour'].value_counts() : 返回计算列中每个值出现次数。

df['Contour'].isnull().sum():返回'Contour'列中的空值计数

df['pH'].notnull().sum():返回“pH”列中非空值的计数

df['Depth'].unique():返回'Depth'列中的唯一值

df.columns:返回所有列的名称

选择数据

列选择:如果只想选择一列,可以使用df['Group']. 这里'Group'是列名。

要选择多个列,可以使用df[['Group', 'Contour', 'Depth']]。

子集选择/索引:如果要选择特定的子集,我们可以使用.loc或.iloc方法。 基本使用方法如下:

df.loc[:,['Contour']]:选择'Contour'列的所有数据。 其中单冒号:选择所有行。 在逗号的左侧,您可以指定所需的行,并在逗号的右侧指定列。

df.loc[0:4,['Contour']]:选择“Contour”列的0到4行。

df.iloc[:,2]:选择第二列的所有数据。

df.iloc[3,:]:选择第三行的所有数据。

数据清洗

数据清洗是数据处理一个绕不过去的坎,通常我们收集到的数据都是不完整的,缺失值、异常值等等都是需要我们处理的,Pandas中给我们提供了多个数据清洗的函数。

数值替换

df.replace({'Topk': 'Top'}, inplace=True)

删除空值

df['pH'].dropna(inplace=True)

输入空值

df['pH'].fillna(df['pH'].mean(), inplace=True) #nulls are imputed with mean of pH column

删除行和列

df.drop(columns = ['Na'], inplace = True) #This drops the 'Na' column
df.drop(2, axis=0, inplace=True) #This drops the row at index 2

值得注意的是,axis = 0表示删除行。 您可以使用axis = 1来删除列。

更改列名称

df.rename(columns = {'Conduc' : 'Cond', 'Dens' : 'Density'}, inplace = True)

数据处理

您可以使用.apply在数据.apply的行或列中应用函数。 下面的代码将平方根应用于“Cond”列中的所有值。

df['Cond'].apply(np.sqrt)

数据分组

有时我们需要将数据分组来更好地观察数据间的差异。Pandas中提供以下几种方式对数据进行分组。 下面的示例按“Contour”列对数据进行分组,并计算“Ca”列中记录的平均值,总和或计数。

df.groupby(by=['Contour'])['Ca'].mean()
df.groupby(by=['Contour'])['Ca'].count()
df.groupby(by=['Contour'])['Ca'].sum()

也可以按多列进行数据分组。

df.groupby(by=['Contour', 'Gp'])['Ca'].mean()

合并多个DataFrame

将两个数据合并在一起有两种方法,即concat和merge。Concat适用于堆叠多个数据帧的行。

按列连接数据

pd.concat([df, df2], axis=1)

按行连接数据

pd.concat([df, df2], axis=0)

当您的数据帧之间有公共列时,合并适用于组合数据帧。

合并数据

pd.merge(df, df2, left_on='Contour', right_on='Contour', how='outer')

数据保存

在完成数据清洗后,就需要将数据输出到csv或excel文件中保存。如果要将数据输出到由制表符分隔的csv文件,请使用以下代码。 '\t'表示您希望它以制表符分隔。

df.to_csv('myDataFrame.csv', sep='\t')

输出到excel:

writer = pd.ExcelWriter('myDataFrame.xlsx') 
df.to_excel(writer,'DataFrame') 
writer.save()

本文分享自微信公众号 - 深度学习与python(PythonDC)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang开发

实时流计算框架——Storm

官方下载地址http://storm.apache.org/downloads.html

17230
来自专栏算法channel

Python读写csv文件专题教程(3)

如果导入的某些列为时间类型,但是导入时没有为此参数赋值,导入后就不是时间类型,如下:

17030
来自专栏Golang开发

Linux—— 文件管理

在Linux系统中一切都是文件,Linux系统使用了不同的字符来加以区分不同的文件类型。

15640
来自专栏数据派THU

DeepMind论文:深度压缩感知,新框架提升GAN性能(附链接)

CS具有灵活性和数据效率高的优点,但由于其稀疏性和昂贵的重建过程,CS的应用受到限制。

20840
来自专栏实战docker

Linux服务器端网络抓包和分析实战

下图是个普通的web架构图,weatherservice是个服务端应用,收到来自浏览器的请求后,会向网站wthrcdn.etouch.cn发起请求,并将响应的数...

24630
来自专栏Golang开发

Nginx(2)——通用配置

user 设置Nginx服务的系统用户 worker_processes 工作进程数 和硬件CPU核数一致 error_log nginx的错误日志 pi...

14320
来自专栏悠扬前奏的博客

Pandas-27.文件读取

read_csv和readtable()可以将文件中的内容转换为DataFrame对象:

10510
来自专栏Java程序猿部落

Dubbo 支持哪些序列化协议?

dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?

13340
来自专栏Unity游戏开发

Unity-资源打包-AssetBundle

读取AB包 1.直接记载一个单独的物体(无依赖) 通过AssetBundle的LoadFromFile方法获取AB包,在通过LoadAsset的泛型方法获得...

81420
来自专栏圣杰的专栏

eShopOnContainers 知多少[7]:Basket microservice

Basket microservice(购物车微服务)主要用于处理购物车的业务逻辑,包括:

14630

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励