从入门到精通!超详细Python之Pandas中文教程,建议收藏

B站影视 日本电影 2025-04-17 14:22 1

摘要:在数据处理与分析领域,Python的Pandas库可谓是一颗璀璨的明星。Pandas提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据 ,让数据处理变得高效又轻松。接下来,让我们一步步走进Pandas的精彩世界。

在数据处理与分析领域,Python的Pandas库可谓是一颗璀璨的明星。Pandas提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据 ,让数据处理变得高效又轻松。接下来,让我们一步步走进Pandas的精彩世界。

安装Pandas有多种方式,以下为你介绍常见的几种:

1. 使用pip安装:pip是Python的包管理器 ,打开命令行界面(Windows的CMD或PowerShell,Linux或Mac的Terminal),输入pip install pandas即可完成安装。如果使用的是Python 3,且pip没有指向Python 3的版本,可能需要使用pip3 install pandas,或者python -m pip install pandas 、python3 -m pip install pandas确保使用正确的Python版本。

2. 使用国内镜像源:由于默认的pip下载源在国内访问时下载速度过慢,可使用国内镜像源加速下载。例如从清华大学的TUNA镜像源安装pandas,命令为pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pandas 。

3. 使用Anaconda安装:Anaconda是一个用于数据分析和科学计算的Python发行版,非常适合数据处理工作。如果已经安装了Anaconda,可使用conda命令安装pandas,即conda install pandas 。conda通常与Anaconda一起安装,用于管理Python环境和包。

4. 在IDE中安装:以PyCharm为例,转到File>Settings>Project: (Your Project Name)>Python Interpreter ,点击右下角的+按钮,搜索pandas并安装。

安装完成后,可以在Python解释器或脚本中尝试导入pandas来验证是否成功安装

import pandas as pd

如果成功导入并且没有报错,说明pandas已经成功安装

Pandas主要有两种数据结构:Series和DataFrame。

Series

Series是一种一维数组结构,能够保存任何数据类型(整数、字符串、浮点数、Python对象等),并且每个元素都有一个标签(索引)。

创建Series

1. 通过列表创建:

import pandas as pd

data = [10, 20, 30, 40, 50]

s = pd.Series(data)

print(s)

2. 通过numpy数组创建:

import pandas as pd

import numpy as np

data = np.array([10, 20, 30, 40, 50])

s = pd.Series(data)

print(s)

3. 通过字典创建:字典的键会成为Series的索引,值成为Series的值。

import pandas as pd

data = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50}

s = pd.Series(data)

print(s)

4. 指定索引创建:可以在创建时自定义索引。

import pandas as pd

data = [10, 20, 30, 40, 50]

index = ['one', 'two', 'three', 'four', 'five']

s = pd.Series(data, index=index)

print(s)

Series常见属性

• index:返回索引。

• dtype:返回对象的数据类型。

• ndim:返回底层数据的维数,Series默认维数为1。

• size:返回基础数据中的元素个数。

• values:将系列作为ndarray返回。

DataFrame

DataFrame是一个二维表格型数据结构,可以看作是由多个Series组成,每一列都是一个Series,且所有列共享同一索引。DataFrame既有行索引也有列索引,每列可以是不同的数据类型(数值、字符串、布尔型等) 。

创建DataFrame

1. 通过字典创建:字典的键作为列名,值作为列数据。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', 'Charlie'],

'Age': [25, 30, 35],

'City': ['New York', 'London', 'Paris']

}

df = pd.DataFrame(data)

print(df)

2. 通过列表的字典创建:

import pandas as pd

data = [

{'Name': 'Alice', 'Age': 25, 'City': 'New York'},

{'Name': 'Bob', 'Age': 30, 'City': 'London'},

{'Name': 'Charlie', 'Age': 35, 'City': 'Paris'}

]

df = pd.DataFrame(data)

print(df)

3. 通过NumPy数组创建:需要指定列名。

import pandas as pd

import numpy as np

data = np.array([[25, 'Alice', 'New York'], [30, 'Bob', 'London'], [35, 'Charlie', 'Paris']])

columns = ['Age', 'Name', 'City']

df = pd.DataFrame(data, columns=columns)

print(df)

DataFrame常见属性

• columns:返回列索引。

• index:返回行索引。

• dtypes:返回每列的数据类型。

• shape:返回DataFrame的形状,即(行数,列数)。

Pandas支持从各种数据源读取数据,也能将数据输出到这些格式的文件中。

读取数据

1. 从CSV文件读取:使用read_csv函数。

import pandas as pd

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

print(df)

2. 从Excel文件读取:使用read_excel函数。

import pandas as pd

df = pd.read_excel('data.xlsx')

print(df)

3. 从SQL数据库读取:需要先建立数据库连接,再使用read_SQL函数。

import pandas as pd

from sqlalchemy import create_engine

# 建立数据库连接

engine = create_engine('sqlite:///my_database.db')

df = pd.read_sql('my_table', engine)

print(df)

写入数据

1. 将DataFrame数据写入CSV文件:使用to_csv函数。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', 'Charlie'],

'Age': [25, 30, 35],

'City': ['New York', 'London', 'Paris']

}

df = pd.DataFrame(data)

df.to_csv('output.csv', index=False)

2. 将DataFrame数据写入Excel文件:使用to_excel函数。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', 'Charlie'],

'Age': [25, 30, 35],

'City': ['New York', 'London', 'Paris']

}

df = pd.DataFrame(data)

df.to_excel('output.xlsx', index=False)

四、数据清洗

在数据分析中,数据清洗是至关重要的一步,Pandas提供了丰富的功能来处理常见的数据问题。

缺失值处理

1. 删除缺失值:使用dropna函数,默认会删除含有缺失值的行。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', None, 'Charlie'],

'Age': [25, None, 35, 40],

'City': ['New York', 'London', 'Paris', None]

}

df = pd.DataFrame(data)

new_df = df.dropna

print(new_df)

2. 填充缺失值:使用fillna函数,可以用指定的值填充缺失值。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', None, 'Charlie'],

'Age': [25, None, 35, 40],

'City': ['New York', 'London', 'Paris', None]

}

df = pd.DataFrame(data)

df.fillna('Unknown', inplace=True)

print(df)

重复值处理

使用duplicated函数可以检测重复行,drop_duplicates函数用于删除重复行。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', 'Alice', 'Charlie'],

'Age': [25, 30, 25, 40],

'City': ['New York', 'London', 'New York', 'Paris']

}

df = pd.DataFrame(data)

# 检测重复行

duplicates = df.duplicated

print(duplicates)

# 删除重复行

new_df = df.drop_duplicates

print(new_df)

数据类型转换

使用astype函数可以将一列数据从一种类型转换为另一种类型。

import pandas as pd

data = {

'Age': ['25', '30', '35', '40']

}

df = pd.DataFrame(data)

df['Age'] = df['Age'].astype(int)

print(df)

文本数据处理

Pandas提供了一系列字符串处理方法,如分割、替换、去除空格等。

import pandas as pd

data = {

'FullName': ['Alice Smith', 'Bob Johnson', 'Charlie Brown']

}

df = pd.DataFrame(data)

# 分割字符串

df['FirstName'] = df['FullName'].str.split(' ').str[0]

df['LastName'] = df['FullName'].str.split(' ').str[1]

print(df)

# 替换字符串

df['FullName'] = df['FullName'].str.replace(' ', '-')

print(df)

# 去除空格

data = {

'City': [' New York ', ' London ', ' Paris ']

}

df = pd.DataFrame(data)

df['City'] = df['City'].str.strip

print(df)

在DataFrame中,可以通过多种方式筛选和查询数据。

基于索引筛选

1. 通过标签索引(loc):loc函数通过行和列的标签来选择数据。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', 'Charlie', 'David'],

'Age': [25, 30, 35, 40],

'City': ['New York', 'London', 'Paris', 'Sydney']

}

df = pd.DataFrame(data, index=['a', 'b', 'c', 'd'])

# 选择单行

row_data = df.loc['b']

print(row_data)

# 选择多行

rows_data = df.loc[['a', 'c']]

print(rows_data)

# 选择单列

column_data = df.loc[:, 'Name']

print(column_data)

# 选择多列

columns_data = df.loc[:, ['Name', 'City']]

print(columns_data)

# 选择特定行和列

specific_data = df.loc['b', 'City']

print(specific_data)

2. 通过位置索引(iloc):iloc函数通过行和列的位置来选择数据。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', 'Charlie', 'David'],

'Age': [25, 30, 35, 40],

'City': ['New York', 'London', 'Paris', 'Sydney']

}

df = pd.DataFrame(data)

# 选择单行

row_data = df.iloc[1]

print(row_data)

# 选择多行

rows_data = df.iloc[[0, 2]]

print(rows_data)

# 选择单列

column_data = df.iloc[:, 0]

print(column_data)

# 选择多列

columns_data = df.iloc[:, [0, 2]]

print(columns_data)

# 选择特定行和列

specific_data = df.iloc[1, 2]

print(specific_data)

布尔索引

通过布尔条件筛选数据。

# 筛选年龄大于30的数据

filtered_data = df[df['Age'] > 30]

print(filtered_data)

# 筛选城市为New York的数据

filtered_data = df[df['City'] == 'New York']

print(filtered_data)

query函数

使用query函数可以以类似SQL查询的方式筛选数据。

# 筛选年龄大于30的数据

filtered_data = df.query('Age > 30')

print(filtered_data)

# 筛选年龄大于30且城市为Paris的数据

filtered_data = df.query('Age > 30 and City == "Paris"')

print(filtered_data)

apply函数

使用apply函数可以对数据应用自定义函数。

import pandas as pd

data = {

'Age': [25, 30, 35, 40]

}

df = pd.DataFrame(data)

# 定义一个函数,将年龄加10

def add_ten(age):

return age + 10

df['NewAge'] = df['Age'].apply(add_ten)

print(df)

groupby函数

groupby函数用于对数据进行分组,然后可以使用聚合函数(如sum、mean、count等)对分组后的数据进行统计。

import pandas as pd

data = {

'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],

'Age': [25, 30, 35, 40, 45],

'City': ['New York', 'London', 'New York', 'London', 'New York'],

'Salary': [5000, 6000, 5500, 6500, 7000]

}

df = pd.DataFrame(data)

# 按城市分组,计算每个城市的平均工资

grouped_data = df.groupby('City')['Salary'].mean

print(grouped_data)

# 按城市分组,计算每个城市的人数

grouped_data = df.groupby('City')['Name'].count

print(grouped_data)

七、时间序列处理

Pandas具有强大的时间序列数据处理功能,支持日期和时间的索引和计算。

日期和时间的创建

# 创建日期

date = pd.to_datetime('2024-10-01')

print(date)

# 创建时间

time = pd.to_datetime('10:30:00', format='%H:%M:%S')

print(time)

# 创建日期时间

datetime = pd.to_datetime('2024-10-01 10:30:00')

print(datetime)

日期范围生成

使用date_range函数生成日期范围。

# 生成指定日期范围内的日期序列

dates = pd.date_range(start='2024-10-01', end='2024-10-10')

print(dates)

# 生成指定长度的日期序列

dates = pd.date_range(start='2024-10-01', periods=5)

print(dates)

频率转换

可以对时间序列进行频率转换,如将日数据转换为月数据。

import pandas as pd

dates = pd.date_range(start='2024-01-01', end='2024-12-31', freq='D')

data = {'Value': range(len(dates))}

df = pd.DataFrame(data, index=dates)

# 将日数据转换为月数据,计算每月的总和

monthly_data = df.resample('M').sum

print(monthly_data)

通过以上内容,你已经对Pandas有了较为全面的了解,从安装到基本数据结构,再到数据读取、清洗、筛选、转换以及时间序列处理等操作。

希望这份教程能帮助你在Python数据分析的道路上越走越顺,充分发挥Pandas的强大功能,挖掘数据背后的价值。

来源:绿叶菜

相关推荐