一、为什么要学习 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/
!!!!滴滴:不知道怎么安装第三方库或者想换用国内镜像源加速下载,可以点击链接跳转推荐学习文章↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
极速配置!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')
十、综合案例
下面通过一个综合案例来回顾一下前面所学的知识。假设我们有一份学生成绩数据,需要完成以下操作:
- 读取数据
- 处理缺失值(用均值填充)
- 计算每个学生的总分和平均分
- 按照平均分降序排序
- 按照班级分组,计算每个班级的平均分
- 保存处理后的结果
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 的精髓。

6179

被折叠的 条评论
为什么被折叠?



