为了账号安全,请及时绑定邮箱和手机立即绑定

pandas入门指南:轻松掌握数据处理技巧

概述

本文全面介绍了pandas这一强大的Python数据分析库,涵盖了其主要功能、数据结构和使用方法。文章详细讲解了pandas在数据导入导出、清洗预处理、筛选排序以及聚合分组等方面的应用技巧,帮助读者轻松掌握数据处理技能。

pandas入门指南:轻松掌握数据处理技巧
1. pandas简介

1.1 什么是pandas

pandas是一个强大的Python数据分析库,它提供了高性能、易用的数据结构和数据分析工具。pandas基于NumPy构建,但提供了更为高级的数据操作功能。

1.2 pandas的主要功能和优势

  1. 数据结构:pandas提供了两种主要的数据结构:SeriesDataFrameSeries是一种一维数据结构,而DataFrame是一种二维表格型数据结构,能够很好地处理各种类型的数据。

  2. 数据导入和导出:pandas支持多种数据格式的读取和写入,如CSV、Excel、SQL数据库等。

  3. 数据清洗与预处理:可以方便地处理缺失值、重复值、数据类型转换等。

  4. 数据筛选与排序:支持复杂的条件筛选与排序,可以灵活地获取所需的数据子集。

  5. 数据聚合与分组:提供了丰富的聚合与分组功能,可以进行复杂的统计分析。

  6. 时间序列分析:pandas内置了处理时间序列的能力,支持各种时间序列的操作和分析。

  7. 高性能:pandas利用了C语言的性能优化,提供了高效的数值计算性能。例如,下面的代码展示了pandas在处理大数组时的高效性:

    import pandas as pd
    import numpy as np
    import time
    
    # 生成大数组
    big_array = np.random.randn(1000000)
    big_series = pd.Series(big_array)
    
    # 计时
    start_time = time.time()
    sum(big_array)
    print(f"NumPy sum: {time.time() - start_time}")
    
    start_time = time.time()
    big_series.sum()
    print(f"pandas Series sum: {time.time() - start_time}")

1.3 pandas的安装和基本使用方法

安装pandas的方法通常是使用Python的包管理工具pip:

pip install pandas

基本使用示例

import pandas as pd

# 创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

# 创建DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)
2. pandas数据结构

2.1 Series对象

2.1.1 创建Series对象的方法

Series对象是pandas中最基本的数据结构之一,它类似于一维数组,但可以包含任意数据类型,并且可以有索引。

import pandas as pd
import numpy as np

# 创建一个简单的Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

# 带有自定义索引的Series
s = pd.Series([1, 3, 5, np.nan, 6, 8], index=['a', 'b', 'c', 'd', 'e', 'f'])
print(s)

2.1.2 Series对象的基本操作

  1. 索引访问
# 访问第一个元素
print(s[0])
# 使用索引访问
print(s['a'])
  1. 切片操作
# 切片访问
print(s[0:3])
  1. 统计操作
# 统计操作
print(s.mean())
print(s.sum())
  1. 数据修改
# 修改元素
s[0] = 10
print(s)
# 修改索引元素
s['a'] = 100
print(s)

2.2 DataFrame对象

2.2.1 创建DataFrame对象的方法

DataFrame对象是pandas中最常用的数据结构之一,它是一个二维表格型数据结构,可以用来存储结构化的数据,类似于Excel表格。

import pandas as pd

# 通过字典创建DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

# 通过列表创建DataFrame
data = [['Tom', 20, 'NYC'], ['Dick', 24, 'LA'], ['Harry', 28, 'Chicago'], ['Peter', 32, 'Houston']]
columns = ['Name', 'Age', 'City']
df = pd.DataFrame(data, columns=columns)
print(df)

2.2.2 DataFrame对象的基本操作

  1. 索引访问
# 访问某一列(列名)
print(df['Age'])
# 访问某一列(列索引)
print(df.iloc[:, 1])
# 访问某一行(行索引)
print(df.iloc[1])
  1. 数据修改
# 修改某一列
df['Age'] = df['Age'] + 1
print(df)
# 修改某一单元格
df.at[1, 'Age'] = 25
print(df)
  1. 统计操作
# 计算列的平均值
print(df['Age'].mean())
# 计算行的平均值
print(df.mean(axis=1))

2.3 Index对象和常用数据类型

2.3.1 Index对象

Index对象是pandas用来表示索引的特殊对象,它表示数据结构的标签。

import pandas as pd

# 创建Index对象
index = pd.Index(['a', 'b', 'c', 'd', 'e', 'f'])
print(index)

# 判断Index对象
print(index.is_unique)
print(index.is_monotonic_increasing)

2.3.2 常用数据类型

pandas支持多种数据类型,包括intfloatobject(字符串)、datetimecategory等。例如,下面的代码展示了如何转换不同类型的数据:

import pandas as pd

# 创建一个包含不同数据类型的DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry'],
        'Age': [20, 24, 28],
        'Salary': [50000.0, 60000.0, None],
        'Birthdate': ['1990-01-01', '1985-03-15', '1980-09-23']}
df = pd.DataFrame(data)
print(df.dtypes)

# 转换数据类型
df['Salary'] = df['Salary'].astype(int)
df['Birthdate'] = pd.to_datetime(df['Birthdate'])
print(df.dtypes)
3. 数据导入与导出

3.1 读取CSV文件

pandas提供了多种读取数据的方法,其中read_csv是读取CSV文件最常用的方法。

import pandas as pd

# 读取CSV文件
df = pd.read_csv('example.csv')
print(df)

3.2 读取Excel文件

pandas也提供了读取Excel文件的功能。

import pandas as pd

# 读取Excel文件
df = pd.read_excel('example.xlsx')
print(df)

3.3 读取数据库中的数据

pandas支持从多种数据库读取数据,如SQL数据库。例如,下面的代码展示了如何从MySQL数据库读取数据:

import pandas as pd
import pymysql

# 读取MySQL数据库中的数据
conn = pymysql.connect(host='localhost', user='root', password='password', db='example_db')
query = 'SELECT * FROM example_table'
df = pd.read_sql(query, conn)
print(df)

3.4 将数据保存为各种格式

pandas不仅支持读取数据,也支持将数据保存为各种格式。

import pandas as pd

# 保存为CSV文件
df.to_csv('output.csv', index=False)

# 保存为Excel文件
df.to_excel('output.xlsx', index=False)

# 保存为SQL数据库
conn = sqlite3.connect('example.db')
df.to_sql('output_table', conn, if_exists='replace', index=False)
4. 数据清洗与预处理

4.1 缺失值处理

4.1.1 缺失值的识别

在进行数据清洗时,首先要识别并处理缺失值。

import pandas as pd

# 创建包含缺失值的DataFrame
data = {'Name': ['Tom', 'Dick', None, 'Peter'],
        'Age': [20, None, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

# 识别缺失值
print(df.isna().sum())

4.1.2 缺失值的填充和删除

填充缺失值的方法包括fillnainterpolate等,删除缺失值的方法是dropna

import pandas as pd

# 填充缺失值
df.fillna(value={'Age': 25, 'City': 'Unknown'}, inplace=True)
print(df)

# 删除缺失值
df.dropna(how='any', inplace=True)
print(df)

4.2 数据类型转换

4.2.1 数据类型的识别

pandas提供了多种方法来识别数据类型。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry'],
        'Age': [20, 24, 28],
        'Salary': [50000.0, 60000.0, 70000.0]}
df = pd.DataFrame(data)
print(df.dtypes)

4.2.2 数据类型的转换

pandas提供了多种方法来转换数据类型,如astypeinfer_objects等。

import pandas as pd

# 转换数据类型
df['Age'] = df['Age'].astype(str)
print(df.dtypes)

4.3 重复数据处理

pandas提供了检测和处理重复数据的多种方法,如duplicateddrop_duplicates。例如,下面的代码展示了如何保留重复数据的一个实例:

import pandas as pd

# 创建一个包含重复数据的DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Tom', 'Dick'],
        'Age': [20, 24, 28, 20, 24],
        'City': ['NYC', 'LA', 'Chicago', 'NYC', 'LA']}
df = pd.DataFrame(data)
print(df)

# 保留第一个重复的数据
df.drop_duplicates(subset='Name', keep='first', inplace=True)
print(df)
5. 数据筛选与排序

5.1 筛选数据

5.1.1 基于条件筛选

pandas提供了多种基于条件筛选数据的方法。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

# 基于条件筛选
filtered_df = df[df['Age'] > 24]
print(filtered_df)

5.1.2 通过索引筛选

pandas也支持通过索引进行筛选。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

# 通过索引筛选
filtered_df = df[df.index.isin([0, 3])]
print(filtered_df)

5.1.3 混合条件筛选

可以结合多个条件进行筛选。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

# 混合条件筛选
filtered_df = df[(df['Age'] > 24) & (df['City'] == 'Chicago')]
print(filtered_df)

5.2 数据排序

5.2.1 按列排序

pandas提供了按列进行排序的功能。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

# 按Age列排序
sorted_df = df.sort_values(by='Age', ascending=True)
print(sorted_df)

5.2.2 按行排序

pandas也支持按行进行排序。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

# 按City列排序
sorted_df = df.sort_values(by='City', ascending=True)
print(sorted_df)

5.2.3 多列排序

还可以按多列进行排序。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

# 按多列排序
sorted_df = df.sort_values(by=['Age', 'City'], ascending=[True, False])
print(sorted_df)
6. 数据聚合与分组

6.1 数据聚合

6.1.1 基本聚合函数

pandas提供了多种基本的聚合函数,如summeanmax等。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'Salary': [50000.0, 60000.0, 70000.0, 80000.0]}
df = pd.DataFrame(data)
print(df)

# 基本聚合函数
print(df['Age'].mean())
print(df['Salary'].sum())

6.1.2 自定义聚合函数

除了内置的聚合函数,还可以自定义聚合函数。

import pandas as pd
import numpy as np

# 自定义聚合函数
def custom_aggregation(series):
    return series.median()

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'Salary': [50000.0, 60000.0, 70000.0, 80000.0]}
df = pd.DataFrame(data)
print(df)

# 自定义聚合
print(df['Age'].agg(custom_aggregation))
print(df['Salary'].agg([custom_aggregation, np.mean]))

6.2 数据分组

6.2.1 分组依据

pandas支持多种分组依据,如单列或多列。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'NYC', 'LA']}
df = pd.DataFrame(data)
print(df)

# 单列分组
grouped = df.groupby('City')
print(grouped.groups)

# 多列分组
grouped = df.groupby(['City', 'Age'])
print(grouped.groups)

6.2.2 分组后的操作

pandas提供了多种对分组后的数据进行操作的方法,如aggapply等。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'NYC', 'LA']}
df = pd.DataFrame(data)
print(df)

# 分组后的聚合操作
grouped = df.groupby('City')['Age'].mean()
print(grouped)

# 分组后的自定义操作
def custom_operation(group):
    return group['Age'].median()

grouped = df.groupby('City').apply(custom_operation)
print(grouped)

6.2.3 分组后统计

可以进行分组后的统计操作,如计数、求和等。

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Tom', 'Dick', 'Harry', 'Peter'],
        'Age': [20, 24, 28, 32],
        'City': ['NYC', 'LA', 'NYC', 'LA']}
df = pd.DataFrame(data)
print(df)

# 分组后统计
grouped = df.groupby('City').agg({'Age': ['count', 'mean', 'min', 'max']})
print(grouped)

通过以上详细的指南,您可以掌握pandas的主要功能和使用方法,轻松进行数据处理和分析。希望这些示例和代码能够帮助您更好地理解和应用pandas。对于更深入的学习,建议参考pandas官方文档或参加pandas相关课程

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消