Pandas 入门指南:轻松搞定数据处理的 Python 利器

金融供应链数据挖掘实战

Python 解析 FactSet Revere,手把手构建供应链月度面板数据

一、为什么要学习 pandas?​

刚进入计算机专业的你,可能已经接触过 Python 的基本语法,用列表、字典处理过一些简单数据。但当面对更复杂的结构化数据,比如一个班级的成绩表、一份电商的销售记录时,仅用列表和字典就会显得力不从心。这时候,pandas 库就像一位高效的 “数据管家”,能帮你轻松完成数据的读取、清洗、分析等一系列操作。​

举个简单的例子,如果你想从一份包含上千条记录的学生成绩表中找出数学成绩大于 90 分的同学,并用 Python 自带的列表处理,可能需要写好几行循环代码;而用 pandas,一行代码就能搞定。而且 pandas 处理数据的效率极高,能节省大量时间,这也是它在数据分析、数据科学等领域被广泛使用的原因。


二、安装 pandas​

在使用 pandas 之前,我们需要先安装它。打开电脑的终端(Windows 系统可以用命令提示符或 PowerShell,Mac 和 Linux 系统用终端),输入以下命令:

pip install pandas -i https://mirrors.aliyun.com/pypi/simple/

如果你使用的是 Anaconda 环境,也可以输入:

conda install pandas -i https://mirrors.aliyun.com/pypi/simple/

!!!!滴滴:不知道怎么安装第三方库或者想换用国内镜像源加速下载,可以点击链接跳转推荐学习文章↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Python国内镜像源全攻略:加速你的第三方库下载

极速配置!Anaconda换用国内pip镜像源,一劳永逸解决下载龟速!

安装完成后,我们可以在 Python 环境中测试是否安装成功:

import pandas as pd  # 按照惯例,将pandas简写为pd
print(pd.__version__)  # 打印pandas的版本号,如果能成功输出则说明安装成功

三、pandas 的核心数据结构​

pandas 有两个核心数据结构:Series 和 DataFrame,掌握它们是学习 pandas 的基础。​

3.1 Series​

Series 就像是一个带标签的一维数组,它由一组数据和一组与之对应的索引组成。

import pandas as pd

# 创建一个简单的Series
data = [85, 92, 78, 90, 88]
index = ['张三', '李四', '王五', '赵六', '钱七']
score_series = pd.Series(data, index=index, name='数学成绩')

print(score_series)

运行上面的代码,输出结果如下:

张三    85
李四    92
王五    78
赵六    90
钱七    88
Name: 数学成绩, dtype: int64

从输出结果可以看到,Series 左边是索引(这里是学生姓名),右边是对应的数据(数学成绩),最后还显示了数据的类型。​

我们可以通过索引来获取 Series 中的数据:

# 获取李四的数学成绩
print(score_series['李四'])  # 输出:92

# 获取多个学生的成绩
print(score_series[['张三', '王五']])

3.2 DataFrame​

DataFrame 是一个二维的表格型数据结构,它有行索引和列索引,可以看作是由多个 Series 组成的集合。

import pandas as pd

# 创建一个简单的DataFrame
data = {
    '数学': [85, 92, 78, 90, 88],
    '语文': [90, 88, 95, 82, 86],
    '英语': [76, 85, 88, 92, 80]
}
index = ['张三', '李四', '王五', '赵六', '钱七']
score_df = pd.DataFrame(data, index=index)

print(score_df)

运行结果如下:

    数学  语文  英语
张三  85  90  76
李四  92  88  85
王五  78  95  88
赵六  90  82  92
钱七  88  86  80

可以看到,DataFrame 就像一个表格,有行有列,非常直观。


四、数据的获取​

在实际应用中,我们的数据通常存储在文件中,pandas 支持多种文件格式的数据读取,其中最常用的是 CSV 和 Excel 文件。​

4.1 读取 CSV 文件

import pandas as pd

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

# 查看数据的前5行
print(df.head())

4.2 读取 Excel 文件​

读取 Excel 文件需要先安装 openpyxl 库(对于.xlsx 格式):

pip install openpyxl -i https://mirrors.aliyun.com/pypi/simple/

然后读取文件:

import pandas as pd

# 读取Excel文件
df = pd.read_excel('students_scores.xlsx', engine='openpyxl')

# 查看数据的后5行
print(df.tail())

五、数据的查看与基本统计​

获取数据后,我们需要对数据有一个基本的了解,可以通过以下方法实现:

import pandas as pd

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

# 查看数据的形状(行数和列数)
print('数据形状:', df.shape)

# 查看数据的列名
print('列名:', df.columns)

# 查看数据的索引
print('索引:', df.index)

# 查看数据的基本信息(包括数据类型、非空值数量等)
print(df.info())

# 查看数据的统计描述(包括均值、标准差、最大值、最小值等)
print(df.describe())

六、数据的索引与选择​

在处理数据时,我们经常需要选择特定的行或列进行操作。​

6.1 选择列

import pandas as pd

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

# 选择单列
math_scores = df['数学']
print(math_scores)

# 选择多列
selected_scores = df[['数学', '语文']]
print(selected_scores)

6.2 选择行​

可以使用 loc 和 iloc 方法来选择行,loc 是根据索引标签选择,iloc 是根据位置选择。

import pandas as pd

df = pd.read_csv('students_scores.csv', index_col='姓名')  # 将姓名设为索引

# 使用loc根据索引标签选择行
zhang_san = df.loc['张三']
print(zhang_san)

# 选择多行
selected_students = df.loc[['张三', '李四']]
print(selected_students)

# 使用iloc根据位置选择行(从0开始)
first_student = df.iloc[0]
print(first_student)

# 选择第2到第4行(不包括第5行)
students_2_to_4 = df.iloc[1:4]
print(students_2_to_4)

6.3 条件选择​

我们还可以根据条件来选择数据:

import pandas as pd

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

# 选择数学成绩大于90分的学生
math_gt_90 = df[df['数学'] > 90]
print(math_gt_90)

# 选择数学成绩大于90分且语文成绩大于85分的学生
math_gt_90_and_chinese_gt_85 = df[(df['数学'] > 90) & (df['语文'] > 85)]
print(math_gt_90_and_chinese_gt_85)

七、数据的清洗​

实际获取的数据往往存在缺失值、重复值等问题,需要进行清洗。

7.1 处理缺失值

import pandas as pd

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

# 查看缺失值情况
print(df.isnull().sum())

# 删除含有缺失值的行
df_dropna = df.dropna()
print(df_dropna)

# 用均值填充缺失值
df_fillna_mean = df.fillna(df.mean())
print(df_fillna_mean)

7.2 处理重复值

import pandas as pd

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

# 查看重复值情况
print(df.duplicated().sum())

# 删除重复值
df_drop_duplicates = df.drop_duplicates()
print(df_drop_duplicates)

7.3 数据类型转换​

有时候数据的类型不符合我们的要求,需要进行转换:

import pandas as pd

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

# 查看各列的数据类型
print(df.dtypes)

# 将“年龄”列转换为整数类型
df['年龄'] = df['年龄'].astype(int)
print(df.dtypes)

八、数据的操作​

8.1 添加列

import pandas as pd

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

# 添加总分列
df['总分'] = df['数学'] + df['语文'] + df['英语']
print(df)

# 添加平均分列
df['平均分'] = df['总分'] / 3
print(df)

8.2 删除列

import pandas as pd

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

# 删除“班级”列
df_drop_class = df.drop('班级', axis=1)
print(df_drop_class)

8.3 数据排序

import pandas as pd

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

# 按照数学成绩降序排序
df_sort_math = df.sort_values(by='数学', ascending=False)
print(df_sort_math)

# 先按照班级升序排序,再按照总分降序排序
df_sort_class_total = df.sort_values(by=['班级', '总分'], ascending=[True, False])
print(df_sort_class_total)

8.4 分组与聚合​

分组与聚合可以帮助我们对数据进行分类统计:

import pandas as pd

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

# 按照班级分组,计算每个班级各科的平均分
class_group = df.groupby('班级').mean()
print(class_group)

# 按照班级分组,计算每个班级的学生人数
class_count = df.groupby('班级').size()
print(class_count)

九、数据的输出​

处理完数据后,我们可以将结果保存到文件中:​

9.1 保存为 CSV 文件

import pandas as pd

df = pd.read_csv('students_scores.csv')
# 进行一些数据处理操作...

# 保存为CSV文件
df.to_csv('processed_students_scores.csv', index=False)  # index=False表示不保存索引

9.2 保存为 Excel 文件

import pandas as pd

df = pd.read_csv('students_scores.csv')
# 进行一些数据处理操作...

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

十、综合案例​

下面通过一个综合案例来回顾一下前面所学的知识。假设我们有一份学生成绩数据,需要完成以下操作:​

  1. 读取数据​
  1. 处理缺失值(用均值填充)​
  1. 计算每个学生的总分和平均分​
  1. 按照平均分降序排序​
  1. 按照班级分组,计算每个班级的平均分​
  1. 保存处理后的结果
import pandas as pd

# 1. 读取数据
df = pd.read_csv('students_scores.csv')

# 2. 处理缺失值
df = df.fillna(df.mean())

# 3. 计算总分和平均分
df['总分'] = df['数学'] + df['语文'] + df['英语']
df['平均分'] = df['总分'] / 3

# 4. 按照平均分降序排序
df = df.sort_values(by='平均分', ascending=False)

# 5. 按照班级分组,计算每个班级的平均分
class_avg = df.groupby('班级')['平均分'].mean()
print('各班级平均分:')
print(class_avg)

# 6. 保存处理后的结果
df.to_csv('processed_students_scores.csv', index=False)
print('数据处理完成并保存成功!')

十一、总结​

pandas 是一个功能强大的数据处理库,它能帮助我们轻松应对各种数据处理任务。本文介绍了 pandas 的基本用法,包括数据结构、数据的获取、查看、索引与选择、清洗、操作和输出等。对于刚入学的大一新生来说,刚开始学习可能会觉得有些复杂,但只要多动手练习,熟悉各种方法的使用,就能逐渐掌握 pandas 的精髓。

金融供应链数据挖掘实战

Python 解析 FactSet Revere,手把手构建供应链月度面板数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值