#CDA网校python之基础lesson2:Pandas
作者:supermolly email:maoyi@superbonds.info
(作者的私心:想建一个本地化又国家化团队,聚焦80+主权国家债券的垂直媒体)
Pandas是什么——Python是工厂,Pandas是一个专门处理数据的车间!
(原来Pandas是原来的量化金融家在Excel和SQL【非常棒的数据库】的基础上编写的)
Pandas具体实现的功能:
1.合并报表
2.寻找:报表们中的数据
3.转变CSV、JSON、HTML、Excel格式
4.压缩:文件内存
5.去除:异常值 = 数据清洗 等等!
以上的使用模式很简答 !为什么要学习Pandas,及Pandas的使用场景出现频率如下——
学习pandas你大概要明白:
总结:
.
的作用:访问对象的属性或方法(如 pd.DataFrame
调用构造函数/功能)。df = pd.DataFrame(...)
:创建新对象并赋值给 df
。df['更新后的列1','更新后的列2'] = ...
:修改已有的 df
对象。df['列名'] = 列表
新增某列。df.loc[新索引] =
新增某行。
但是:需要理解——这个方法的应用性低于30%,有更适合的! 一些我自己认为入门时的tips:
- DataFrame 是 Pandas 的二维数据容器(类,非函数)。
pd.
前缀是导入别名约定,使用pd.DataFrame
调用。concat
用于拼接数据,ignore_index=True
重置索引。- 大小写敏感是 Python 的核心规则。
{}
、[]
、()
分别定义字典/集合、列表、元组。- 保留时间戳指保持原有时间索引。
- 标点符号是语法规则的一部分,定义代码结构。
DataFrame是什么? 答:在Pandas里使用的一种function!类似于Excel的行头和列头建立起来的整个——(二维)表格!
问题1:直接导入 DataFrame
并举例说明
DataFrame两种导入方式的对比
方式1:常规导入(推荐使用 pd.
前缀)
import pandas as pd # 导入整个 Pandas 库并命名为 pd
# 通过 pd.DataFrame() 创建对象
df = pd.DataFrame({
'水果': ['苹果', '香蕉'],
'库存量': [20, 15]
})
print(df)
方式2:直接导入 DataFrame
类
from pandas import DataFrame # 直接从 pandas 导入 DataFrame 类
# 直接使用 DataFrame() 创建对象(无需 pd. 前缀)
df = DataFrame({
'水果': ['苹果', '香蕉'],
'库存量': [20, 15]
})
print(df)
为何推荐 pd.
前缀?
-
代码可读性
当代码中出现pd.DataFrame()
,其他开发者能立刻识别这是 Pandas 的 DataFrame,而非自定义类。 -
避免命名冲突
如果你的代码中有其他名为DataFrame
的变量或类,使用pd.
前缀能明确指向 Pandas 的功能。
问题2:最常用的一些功能能展示一下吗?
动手实验!
建立自己的csv文件,打开你的anaconda环境试一试吧!
# ———–[STEP1 数据加载]————-
import pandas as pd
# 🚀 读取CSV同时处理缺失值(压缩写法)
sales = (pd.read_csv('sales.csv')
.fillna({'销量':0, '销售额':0}) # 空值填充为0
.astype({'销量':'int32'})) # 节省内存
products = pd.read_csv('products.csv').dropna() # 删除产品表空值行
# ———–[STEP2 数据融合]————-
# 🌀 SQL JOIN实体化(左连接确保销售数据完整)
full_data = sales.merge(products,
on='饮品名',
how='left',
suffixes=('_销售','_成本'))
# ———–[STEP3 特征工程]————-
# 💰 计算利润和日期格式化(时间序列分析准备)
full_data = (full_data
.assign(
利润=lambda x: x['销售额'] – x['销量']*x['成本价'],
日期=pd.to_datetime(x['日期'])
))
# ———–[STEP4 多维透视]————-
# 📊 按【品类+月份】分析销售指标(自动生成层级索引)
monthly_report = (full_data
.groupby([full_data['类别'],
full_data['日期'].dt.month])
.agg({
'销量':'sum',
'利润': ['mean', 'max']
}))
# ———–[STEP5 可视化]————-
monthly_report.unstack(level=0)['利润']['mean'].plot(
kind='line',
title='各品类月均利润趋势'
)
以上奶茶店实验内容不要求第二次学习的时候掌握,但是讲完上述内容再讲基本功容易得多:
基本功:
总结:这些基本功都比较简单,多看+多看就能看明白!
以上6个基本功的一些易错点:
1. print(data.index) 输出的意义
2.valid_ages = data[~data['Age'].isnull()]
的分解
补充:什么是步长?
补充:是什么布尔?
以后,会学习更多关于 Pandas 操作的具体示例+如何自定义索引或更复杂的条件筛选。
作者:毛艺@superbonds.info