Python pandas十分钟教程

本文首发于公众号《深度学习与Python》

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列。

http://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()

参考:

https://towardsdatascience.com/pandas-for-people-in-a-hurry-59d966630ae0

    原文作者:Python语音识别
    原文地址: https://zhuanlan.zhihu.com/p/67810692
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞