当前位置:   article > 正文

机器学习之Pandas(数据清洗,数据转换,数据过滤)_在这个实训中,我们将学习使用pandas来学习数据清理的基础知识,我们使用的数据是la

在这个实训中,我们将学习使用pandas来学习数据清理的基础知识,我们使用的数据是la

Pandas库是Python中专为数据分析而设计的一款强大且灵活的开源库,它建立在NumPy之上,提供了高效且易于使用的数据结构以及数据分析工具。Pandas的主要目标是简化数据清洗和预处理工作,并为统计建模、可视化以及其他复杂的数据分析流程提供便利。以下是对Pandas库的详细介绍:

主要数据结构:

  1. Series:

    • Series是Pandas提供的类似于一维数组的对象,但每个元素都有一个关联的标签(称为索引)。它可以包含任何数据类型(整数、字符串、浮点数等),并且具有高度优化的标签化索引功能。
  2. DataFrame:

    • DataFrame是Pandas的核心数据结构,它是二维的表格型数据结构,类似于电子表格或SQL表。DataFrame可以容纳多个Series,每列可以有不同的数据类型,且每列都有自己的标签(列名),同时每行也有对应的索引。

关键特性:

  • 高性能

    • Pandas构建在C库之上,如NumPy,以实现快速的数据处理和分析。
  • 数据清洗

    • 提供丰富的数据清洗功能,例如处理缺失值(fillna, dropna)、重复值检测(duplicated, drop_duplicates)和数据类型转换(astype)。
  • 数据操作

    • 强大的数据操作方法,包括但不限于合并、重塑(pivot, melt)、选择(loc, iloc, ix)、过滤(布尔索引)和排序。
  • 分组和聚合

    • groupby函数允许对数据进行分组,并能在每个组上执行聚合操作,如求和、均值、中位数等。
  • 时间序列处理

    • 内置对时间序列数据的支持,包括日期解析、频率转换和滚动窗口统计等。
  • 文件读写

    • 支持多种文件格式的读写,如CSV、Excel、SQL数据库、HDF5、JSON、HTML等。
  • 统计分析

    • 提供一系列描述性统计方法,可以方便地计算单列或多列的统计指标。

示例:

import pandas as pd

# 创建一个简单的Series
s = pd.Series([1, 3, 5, np.nan, 6, 8], index=['a', 'b', 'c', 'd', 'e', 'f'])
print(s)

# 创建一个DataFrame
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'Salary': [50000, 60000, 70000]
})
print(df)

# 数据操作
df['NewColumn'] = df['Age'] * 2  # 添加新列
filtered_df = df[df['Age'] > 30]  # 过滤行

# 分组和聚合
grouped = df.groupby('Age').sum()  # 按年龄分组并求工资总和

# 时间序列操作
ts = pd.date_range(start='1/1/2020', periods=10)  # 创建时间序列索引
df_ts = pd.DataFrame({'Values': range(10)}, index=ts)  # 创建含时间序列索引的DataFrame
resampled_df = df_ts.resample('M').mean()  # 按月进行数据重采样并计算平均值
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

Pandas库的使用涉及到大量的数据处理、分析和操作功能,以下是一些关键功能的详细示例:

创建DataFrame和Series

import pandas as pd

# 创建一个简单的Series
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s)

# 创建一个DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Chicago', 'Los Angeles']
}
df = pd.DataFrame(data)
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

读取数据

# 从CSV文件读取数据
df_from_csv = pd.read_csv('data.csv')

# 从Excel文件读取数据
df_from_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 从数据库读取数据(假设已经连接好数据库引擎)
sql_query = "SELECT * FROM my_table"
df_from_sql = pd.read_sql_query(sql_query, con=my_engine)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

数据操作

# 新增列
df['Income'] = [50000, 60000, 70000]

# 修改列值
df['Age'] += 1  # 所有年龄增加1岁

# 选择特定列
selected_columns = df[['Name', 'Age']]

# 基于条件筛选行
mask = df['Age'] > 30
older_people = df[mask]

# 排序
sorted_df = df.sort_values(by='Age', ascending=False)

# 删除重复行
unique_df = df.drop_duplicates(subset=['Name'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

分组和聚合

# 对数据进行分组并计算各组的统计指标
grouped = df.groupby('City').agg({'Age': ['min', 'max', 'mean'], 'Income': 'sum'})

# 转换数据透视表
pivot_table = df.pivot_table(values='Income', index='City', columns='Gender')
  • 1
  • 2
  • 3
  • 4
  • 5

时间序列操作

# 创建一个时间序列索引的DataFrame
date_index = pd.date_range(start='2020-01-01', periods=12, freq='M')
ts_data = pd.DataFrame({'Sales': range(12)}, index=date_index)

# 重新采样数据(例如,按季度平均)
quarterly_sales = ts_data.resample('Q').mean()

# 对时间序列数据填充缺失值
filled_data = ts_data.fillna(method='ffill')  # 使用前向填充
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

合并和连接数据

# 将两个DataFrame按照共同的列合并
df1 = pd.DataFrame(...some data...)
df2 = pd.DataFrame(...other data...)
merged_df = pd.merge(df1, df2, on='common_column')

# 或者直接连接(concatenate)
combined_df = pd.concat([df1, df2], axis=0, ignore_index=True)  # 横向堆叠(行方向)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

以上仅为Pandas库的部分基础功能和操作示例,实际应用中还包括更复杂的数据清洗、数据转换、数据过滤等操作。Pandas的强大之处在于它能便捷高效地处理各种结构化数据,为后续的数据分析、模型构建等工作打下坚实基础。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/447525
推荐阅读
相关标签
  

闽ICP备14008679号