#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:

    1. DataFrame 是 Pandas 的二维数据容器(类,非函数)。
    2. pd. 前缀是导入别名约定,使用 pd.DataFrame 调用。
    3. concat 用于拼接数据,ignore_index=True 重置索引。
    4. 大小写敏感是 Python 的核心规则。
    5. {}[]() 分别定义字典/集合、列表、元组。
    6. 保留时间戳指保持原有时间索引。
    7. 标点符号是语法规则的一部分,定义代码结构。

    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. 前缀?
    1. 代码可读性
      当代码中出现 pd.DataFrame(),其他开发者能立刻识别这是 Pandas 的 DataFrame,而非自定义类。

    2. 避免命名冲突
      如果你的代码中有其他名为 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

    物联沃分享整理
    物联沃-IOTWORD物联网 » #CDA网校python之基础lesson2:Pandas

    发表回复