博客
关于我
Pandas模块,我觉得掌握这些就够用了!
阅读量:793 次
发布时间:2023-02-26

本文共 3304 字,大约阅读时间需要 11 分钟。

Pandas模块:数据处理的利器

在进行数据分析和处理时,Pandas是一个强大的工具,能够帮助数据科学家高效完成任务。作为数据预处理的核心模块之一,Pandas提供了丰富的功能和函数,能够满足从数据读写到清洗、转换、合并等多个需求。本文将从基础到高级功能,介绍Pandas模块的使用方法,并通过实际案例演示其应用场景。

数据读写

Pandas模块能够轻松读取多种数据格式,包括CSV、Excel、MySQL等。以下是一个简单的读取MySQL数据库数据的示例:

import pymysql
# 读取MySQL数据库数据
conn = pymysql.connect(host='localhost', user='root', password='test', database='test', port=3306, charset='utf8')
# 读取数据
user = pd.read_sql('select * from topy', conn)
# 关闭连接
conn.close()
# 查看数据
print(user)

通过上述代码,可以直接将MySQL数据库中的数据读取到Pandas DataFrame中,方便后续处理。Pandas还支持读取Excel文件、CSV文件等其他格式的数据,适用于不同场景的需求。

数据清洗

在实际应用中,数据往往会存在缺失值、重复值或格式错误等问题。Pandas提供了多种方法来清洗数据,以下是一个常见的缺失值处理案例:

import pandas as pd
# 读取数据文件
df = pd.read_excel(r'C:\Users\Administrator\Desktop\data_test05.xlsx')
# 检查是否存在缺失值
print('数据集中是否存在缺失值:', any(df.isnull()))
# 删除缺失值
df.dropna()
# 删除特定列
df.drop('age', axis=1)
# 替换缺失值(前后填充)
df.fillna(method='ffill')
# 替换缺失值(后后填充)
df.fillna(method='bfill')
# 替换为常数值
df.fillna(value=0)
# 替换为统计值
df.fillna(value={'gender': df.gender.mode()[0], 'age': df.age.mean(), 'income': df.income.median()})

通过这些方法,可以有效地处理数据中的缺失值,确保数据质量。Pandas还支持通过apply函数对特定列进行操作,适用于更复杂的数据清洗需求。

数据类型转换与操作

在数据处理过程中,数据类型的转换也是关键环节。Pandas提供了丰富的内置函数,能够将原始数据转换为适合分析的类型。以下是一个日期转换和格式调整的示例:

import pandas as pd
# 读取数据文件
df = pd.read_excel(r'C:\Users\Administrator\Desktop\data_test03.xlsx')
# 将生日列转换为日期类型
df['birthday'] = pd.to_datetime(df['birthday'], format='%Y/%m/%d')
# 将手机号转换为字符串类型
df['tel'] = df['tel'].astype('str')
# 新增年龄和工作年龄列
current_year = pd.Timestamp.today().year
df['age'] = current_year - df['birthday'].dt.year
df['workage'] = current_year - df['start_work'].dt.year
# 将手机号中间四位隐藏
df['tel'] = df['tel'].apply(lambda x: x.replace(x[3:7], '****'))
# 提取邮箱域名
df['email_domain'] = df['email'].apply(lambda x: x.split('@')[1])
# 提取专业信息
df['profession'] = df['other'].str.findall('专业:(.*?),')
# 删除无用列
df.drop(['birthday', 'start_work', 'other'], axis=1, inplace=True)

通过这些转换,可以将数据转换为适合分析的格式,并通过apply函数对特定列进行操作,实现更复杂的数据处理需求。

数据合并、连接与汇总

在数据处理过程中,常常需要将多个数据集进行合并或连接。Pandas提供了pd.concatpd.merge等函数,能够实现数据集的合并和连接。以下是一个多表连接的示例:

import pandas as pd
# 创建数据集
df1 = pd.DataFrame({
'name': ['张三', '李四', '王二'],
'age': [21, 25, 22],
'gender': ['男', '女', '男']
})
df2 = pd.DataFrame({
'name': ['丁一', '赵五'],
'age': [23, 22],
'gender': ['女', '女']
})
# 数据集的纵向合并
pd.concat([df1, df2], keys=['df1', 'df2'])
# 如果df2中的“name”变量名为“Name”,则进行如下操作
df2 = pd.DataFrame({
'Name': ['丁一', '赵五'],
'age': [23, 22],
'gender': ['女', '女']
})
# 数据集的纵向合并
pd.concat([df1, df2])
# 构造数据集
df3 = pd.DataFrame({
'id': [1, 2, 3, 4, 5],
'name': ['张三', '李四', '王二', '丁一', '赵五'],
'age': [27, 24, 25, 23, 25],
'gender': ['男', '男', '男', '女', '女']
})
df4 = pd.DataFrame({
'Id': [1, 2, 2, 4, 4, 4, 5],
'score': [83, 81, 87, 75, 86, 74, 88],
'kemu': ['科目1', '科目1', '科目2', '科目1', '科目2', '科目3', '科目1']
})
df5 = pd.DataFrame({
'id': [1, 3, 5],
'name': ['张三', '王二', '赵五'],
'income': [13500, 18000, 15000]
})
# 首先对df3和df4进行合并
merge1 = pd.merge(df3, df4, how='left', left_on='id', right_on='Id')
# 再将合并结果与df5进行合并
merge2 = pd.merge(merge1, df5, how='left')

通过pd.concatpd.merge函数,可以轻松实现数据集的合并和连接。Pandas还支持通过merge函数进行左连接、右连接或内连接,适用于不同的数据处理需求。

总结

Pandas模块为数据科学家提供了强大的数据处理工具,能够从数据读写到清洗、转换、合并等多个环节,帮助用户高效完成数据分析任务。通过实际案例的学习和实践,可以快速掌握Pandas的使用方法,并在数据处理中实现更高效的工作流程。

转载地址:http://ivvfk.baihongyu.com/

你可能感兴趣的文章