Pandas 最详细教程

1. 简介

Pandas是一个基于Numpy的数据处理工具,提供一系列高效的数据操作接口。它能够帮助我们处理各种不同格式的数据,例如表格数据、时间序列、带有标签的数据等等,将其转化成Numpy可识别的数据格式,从而进行进一步的数据分析、统计和可视化等操作。本文将介绍Pandas的基础知识和常用数据库操作,请大家耐心阅读。

2. 安装

2.1 安装Pandas

在Python环境中安装Pandas非常简单,可以使用pip包管理器进行安装。

pip install pandas

安装完毕后,可以在Python环境中import Pandas模块。

import pandas as pd

2.2 安装Numpy

因为Pandas是基于Numpy和Stanford的模块pytz的,所以在使用Pandas之前需要先安装Numpy和pytz两个模块。

pip install numpy

pip install pytz

3. 数据结构介绍

在Pandas中,有两种基本的数据结构:Series和DataFrame。

3.1 Series

Series是Pandas中最简单的一种数据结构,它类似于numpy中的一维数组,但是可以为每个元素设置一个标签作为索引,从而方便进行数据的操作和分析。

#创建一个Series

import pandas as pd

s = pd.Series([3,4,5,6], index=['a','b','c','d'])

print(s)

输出结果为:

a 3

b 4

c 5

d 6

dtype: int64

3.2 DataFrame

DataFrame是Pandas中最常用的一种数据结构,它类似于二维表格,但是可以为每个行和列设置一个标签作为索引和列名,从而方便进行数据的操作和分析。

#创建一个DataFrame

import pandas as pd

data = {'name':['Tom', 'Bob', 'Mary'],

'age':[20, 30, 25],

'gender':['M', 'M', 'F']}

df = pd.DataFrame(data)

print(df)

输出结果为:

name age gender

0 Tom 20 M

1 Bob 30 M

2 Mary 25 F

4. 基础操作

4.1 读取数据

在Pandas中,可以读取多种格式的数据文件,例如.csv、.txt、.json、.html等等。其中,最常见的是.csv文件,以下代码是读取一个.csv文件并将其转化为DataFrame类型。

import pandas as pd

df = pd.read_csv('example.csv')

print(df)

4.2 基本属性

DataFrame中有一些基本属性,可以帮助我们理解和分析数据。

4.2.1 shape属性

shape属性返回DataFrame的行数和列数。

import pandas as pd

df = pd.read_csv('example.csv')

print(df.shape)

输出结果为:

(5, 3)

代表该DataFrame有5行、3列。

4.2.2 head()和tail()方法

head()和tail()方法可以分别返回DataFrame的前几行和后几行,默认返回的是5行,可以传入参数来指定返回的行数。

import pandas as pd

df = pd.read_csv('example.csv')

print(df.head(2)) #返回前两行数据

print(df.tail(2)) #返回后两行数据

输出结果为:

name age gender

0 Tom 20 M

1 Bob 30 M

name age gender

3 Jack 22 M

4 Lily 27 F

4.2.3 describe()方法

describe()方法可以返回DataFrame中数值型数据的统计信息,例如均值、标准差、最大值、最小值等。

import pandas as pd

df = pd.read_csv('example.csv')

print(df.describe())

输出结果为:

age

count 5.000000

mean 26.400000

std 4.438468

min 20.000000

25% 22.000000

50% 25.000000

75% 30.000000

max 32.000000

4.3 数据选择与过滤

在Pandas中,有两种方式可以选择和过滤数据:按标签选择和按位置选择。

4.3.1 按标签选择

通过.loc方法按照标签索引来选择数据。

import pandas as pd

df = pd.read_csv('example.csv')

print(df.loc[2]) #选择第3行数据

print(df.loc[1:3, ['name', 'gender']]) #选择第2至4行的name和gender列数据

4.3.2 按位置选择

通过.iloc方法按照位置索引来选择数据。

import pandas as pd

df = pd.read_csv('example.csv')

print(df.iloc[2]) #选择第3行数据

print(df.iloc[1:3, [0,2]]) #选择第2至4行的第1列和第3列数据

4.4 数据清洗

数据清洗是数据分析的重要一步,常用的方法包括缺失值处理、重复值处理和异常值处理。

4.4.1 缺失值处理

Pandas提供了.fillna和.dropna方法来处理缺失值。

4.4.1.1 .fillna()方法

.fillna()方法可以将DataFrame中的缺失值用指定的值替代,例如0、平均值、中位数等。

import pandas as pd

df = pd.read_csv('example.csv')

df['age'].fillna(df['age'].mean(), inplace=True) #将age列的缺失值用平均值替代

print(df)

4.4.1.2 .dropna()方法

.dropna()方法可以删除DataFrame中包含缺失值的行或列。可以使用axis参数来指定要删除的行或列,0表示行、1表示列,默认是0。

import pandas as pd

df = pd.read_csv('example.csv')

df.dropna(axis=0, inplace=True) #删除含有缺失值的行

print(df)

4.4.2 重复值处理

重复值是指DataFrame中某些行或列完全相同,可以使用.drop_duplicates方法来删除重复值。

import pandas as pd

df = pd.read_csv('example.csv')

df.drop_duplicates(['name'], keep='first', inplace=True) #删除重复的name行

print(df)

4.4.3 异常值处理

异常值是指DataFrame中某些数值偏离正常范围,可以使用条件判断来选择异常值所在的行或列。

import pandas as pd

df = pd.read_csv('example.csv')

df = df[df['age']>20] #选择age列中大于20的行

print(df)

5. 数据统计与分组

5.1 统计函数

函数名 说明

count() 非NA值的数量

sum() 所有值的和

mean() 均值

median() 中位数

mode() 众数

std() 标准差

max() 最大值

min() 最小值

quantile(p) 分位数

5.2 分组

分组是一种对数据进行聚合的重要操作,可以结合多种统计函数对数据进行分组统计。

import pandas as pd

data = {'name':['Tom', 'Bob', 'Mary', 'Jack', 'Lily'],

'age':[20, 30, 25, 22, 27],

'gender':['M', 'M', 'F', 'M', 'F']}

df = pd.DataFrame(data)

#按性别分组并计算均值

grouped = df.groupby('gender').mean()

print(grouped)

输出结果为:

age

gender

F 26.0

M 24.0

6. 数据可视化

除了之前的数据分析方法,Pandas还可以帮助我们进行数据可视化,常用的方法包括折线图、散点图、直方图等等。以下是绘制直方图的方法,大家可以照此思路尝试绘制其他图表。

import pandas as pd

import matplotlib.pyplot as plt

df = pd.read_csv('example.csv')

df['age'].plot(kind='hist', bins=10, alpha=0.8)

plt.show()

7. 总结

本文介绍了Pandas的基础知识和常用操作,包括数据结构、读取数据、基本属性、数据选择与过滤、数据清洗、数据统计与分组以及数据可视化等内容。读者可以根据自己的需求深入学习和掌握。如果需要了解更多内容和细节,可以参考Pandas官方文档。

后端开发标签