Pandas学习
1.Pandas简介
Pandas 是 Python 中用于数据分析的核心第三方库,提供易用的数据结构,擅长处理表格形式的结构化数据;支持从各类数据源导入数据,可以完成数据读取、清洗、统计分析与输出,广泛用于数据科学领域。
核心设计理念包括:
- 标签化数据结构:提供带标签的轴
- 灵活处理缺失数据:内置 NaN 处理机制
- 智能数据对齐:自动按标签对齐数据
- 强大 IO 工具:支持从 CSV、Excel、SQL 等 20 + 数据源读写
- 时间序列处理:原生支持日期时间处理和频率转换

2.Series
(一)Series的创建
# series的创建
import pandas as nd
s = pd.Series([1,2,3,4,5])
print(s) # 输出:

# 自定义索引
s = pd.Series([1,2,3,4,5],index=['A','B','C','D','E'])
print(s) # 输出:

# 定义name
s = pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name = '月份‘)
print(s) # 输出:

# 通过字典来创建
s = pd.Series({"a":1,"b":2,"c":3,"d":4,"e":5})
s1 = pd.Series(s,index=["a","c"])
print(s) # 输出:
![]()
(二)Series的属性

(三)访问Series数据
# 访问数据
print(s['c']) #输出:3
print(s[s<3]) #输出:a 1
#b 2
print(s.head()) # 默认返回前五行数据
print(s.tail(1)) # 返回最后一行数据
(四)Series的常用方法


# 查看所有的描述信息
s.describe()
# 获取元素个数(忽略缺失值)
print(s.count())
# 获取索引
print(s.keys()) # 方法
print(s.index) # 属性
print(s.isna()) # 检查Series里的每一个元素是否为缺失值
s.isin([4,5,6]) # 检查每个元素是否在参数集合中
print(s.mean()) # 平均值
print(s.std()) # 标准差
print(s.var()) # 方差
print(s.mode()) # 众数(打印出现频率最多的数)
print(s.value_counts()) # 打印每个元素出现的次数
s.drop_duplicates() # 去重
print(s.nunique()) # 去重后元素的个数
# 排序
s.sort_index() # 按索引排序
s.sort_values()# 按值排序
3.案例
(一)学生成绩统计
# 创建一个包含10名学生数学成绩的Series,成绩范围在50-100之间。
# 计算平均分、最高分、最低分,并找出高于平均分的学生人数
import pandas as pd
import numpy as np
# 生成随机成绩
np.random.seed(42)
scores = pd.Series(np.random.randint(50,101,10),index = ['学生’+str(i) for i in range(1,11)])
print('平均分:',scores.mean())
print('最高分:',scores.max())
print('最低分:',scores.min())
# 高于平均分的学生人数
mean = scores.mean()
counts = scores[scores>mean].count()
print(counts)
(二)温度数据分析
# 给定某城市一周每天的最高温度 Series,完成以下任务:
# 找出温度超过 30 度的天数
# 计算平均温度
# 将温度从高到低排序
# 找出温度变化最大的两天
import pandas as nd
temperatures = pd.Series ([28, 31, 29, 32, 30, 27, 33],
index=[' 周一 ', ' 周二 ', ' 周三 ', ' 周四 ', ' 周五 ', ' 周六 ', ' 周日 '])
# 找出温度超过 30 度的天数
rest1 = temperatures[temperatures>30].count
print("超过30度的天数:",rest1)
# 计算平均温度
rest2 = temperatures.mean()
print("平均温度:",rest2)
# 将温度从高到低排序
rest3 = temperatures.sort_values(ascending=False)
print("结果为:",rest3)
# 找出温度变化最大的两天
rest3 = temperatures.diff().abs() # 计算后一个元素与前一个元素的差值
n = rest3.sort_values(ascending=False).keys()
print("温度变化最大的两天:",n[:2].tolist())
4.DataFrame介绍
DataFrame 是 pandas 里面的二维表格数据结构(类似 Excel 表格):有行 (index)、列 (columns)

(一)DataFrame的创建
#dataframe的创建方式
import pandas as nd
import numpy as np
#通过series来创建
s1 = pd.Series([1,2,3,4,5])
s2 = pd.Series([6,7,8,9,10])
df = pd.DataFrame({"第一列":s1,"第二列":s2})
print(df) #输出:

#通过字典来创建
df = pd.DataFrame(
{
"id":[1,2,3,4,5],
"name":["tom","Jack","alice","bob","allen"],
"age":[15,17,20,26,30],
"score":[60.5,80,30.6,70,83.5]
}
)
df #输出:

(二)DataFrame的属性

# dataframe的属性
print(df.index) # 行索引
print(df.columns) # 列标签
print(df.ndim) # 维度
print(df.shape) # 形状
print(df.size) # 元素个数
print(df.dtypes) # 数据类型
print(df.T) # 行列转置
# 获取name这一列数据
print(df.loc[:,'name'])
print(df.iloc[:,0])
# 单个元素
print(df.at[3,'score']) #显式
print(df.iat[2,1]) # 隐式
...
(三)访问DataFrame的数据
# 获取单列数据
print(df['name'])
print(df.name)
# 获取多列数据
print(df[['name','score']])
# 随机抽样
print(df.sample)
(四)DataFrame的常用方法
其中许多方法在前面学习series时都已经介绍过了,就不一 一赘述了。

(五)案例
学生成绩分析
# 案例 1:学生成绩分析
# 场景:某班级的学生成绩数据,完成下面 3 项任务
# 1.计算每位学生的总分和平均分。
# 2.找出数学成绩高于 90 分或英语成绩高于 85 分的学生。
# 3.按总分从高到低排序,并输出前 3 名学生。
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'数学': [85, 92, 78, 88, 95],
'英语': [90, 88, 85, 92, 80],
'物理': [75, 80, 88, 85, 90]
}
scores = pd.DataFrame(data)
# 1.计算每位学生的总分和平均分。
scores['总分'] = scores[['数学','英语','物理']].sum(axis=1)
scores['平均分'] = scores['总分'] / 3
scores['平均分2'] = scores[['数学','英语','物理']].mean(axis=1)
# 2.找出数学成绩高于 90 分或英语成绩高于 85 分的学生。
scores[(scores['数学'] > 90) | (scores['英语'] > 85)]
# 3.按总分从高到低排序,并输出前 3 名学生。
r1 = scores.sort_values('总分',ascending=False).head(3)
r2 = scores.nlargest(3,columns=['总分']) # 返回某列数值最大的前 n 行
5.数据分析步骤

6.数据的导入导出
import pandas as np
# 数据的导入
df = pd.read_csv('data/你的文件名')
print(type(df)) # 输出:<class 'pandas.core.frame.DataFrame'>
# 数据的导出
df = df.tail()
df.to_csv('data/新的文件名')
# json
df = pd.read_json('你的文件路径')
import json
with open('你的json文件名') as f:
data = json.load(f)
df = pd.DataFrame(data['users']) # 从文件对象 f 读取 json 文件,转为 python 字典(dict)
浙公网安备 33010602011771号