pandas 数据分析1:数据结构

数据分析

这是一个数据分析的 class-follow 笔记。

导包

import pandas as pd

import numpy as np

两大结构

Series

Series 是带标签的一维数组,可以存储任何数据类型(整型,字符串,浮点数等等)。轴标签统称为索引,基本的 Series 创建方法如下:

s = pd.Series(data, index=index)

s = pd.Series(data=None, index=None, dtype=None, name=None, copy=None, fastpath=None)  # 完整参数配置情况

data 支持:

  • Python 字典
  • 多维数组
  • 标量值,如 5

index 是标签列表,标签可以重复(需要索引唯一的操作才会报错):

  • data 使用字典类型时,键就是一部分的标签,index 中多余的标签会有值 NaN
  • data 使用多维数组时,指定标签要与数据长度相同,默认使用 0~length-1。
  • data 使用标量值时,根据标签的多少创建常量,默认使用 0。

标签是与数据对齐的,计算时不会因为重复标签而发生错误。

Series 既能向多维数组一样进行索引、切片以及一些函数操作,又能像字典一样根据键取值。

import pandas as pd

import numpy as np

ps1 = pd.Series(np.random.randn(10), index=list("甲乙丙丁戊己庚辛壬癸"), name="正态分布随机数")

ps2 = pd.Series(
   {i: np.random.randn() for i in "甲乙丙丁戊"},
    index=list("甲乙丙丁戊己庚辛壬癸"),
    name = "正态分布随机数",
)

ps3 = pd.Series(1., index=list("甲乙丙丁戊己庚辛壬癸"), name="常量")

# print(ps1, ps2, ps3, sep="\n\n")

print(ps1[0], ps1["甲"], ps1[0:3], ps1[ps1 > ps1.median()], sep='\n\n')

DataFrame

DataFrame 可以理解为多个 Series 组成的。

df = pd.DataFrame(data, index, cloumn)

df = pd.DataFrame(data=None, index=None, cloumn=None, dtype=None, copy=None)

data 支持:

  • 数组型:多维数组、列表、结构多数组
  • 字典型:列表字典、Series 字典、元组字典(自动创建多层索引)
  • 一个 DataFrame
df1_1 = pd.DataFrame(
    {
        'name': pd.Series(["张三", "李四", "王五"], index=list("甲乙丙")),
        'score': pd.Series([100, 70, 80], index=list("甲乙丙")),
        'grade': pd.Series(['A', 'C', 'B'], index=list("甲乙丙")),
    }
)

df1_2 = pd.DataFrame(
    {
        'name': ["张三", "李四", "王五"],
        'score': [100, 70, 80],
        'grade': ['A', 'C', 'B'],
    },
    index=list("甲乙丙"),
)

df1_3 = pd.DataFrame(
    {   # 行标签多一级,列标签多一级
        ("成绩等级表", 'name'): { ("X", "甲",): "张三", ("X", "乙",): "李四", ("X", "丙",): "王五" },
        ("成绩等级表", 'score'): { ("X", "甲",): 100, ("X", "乙",): 70, ("X", "丙",): 80 },
        ("成绩等级表", 'grade'): { ("X", "甲",): "A", ("X", "乙",): "C", ("X", "丙",): "B" }
    }
)

df2_1 = pd.DataFrame(
    [
        ["张三", 100, 'A'],
        ["李四", 70, 'C'],
        ["王五", 80, 'B'],
    ],
    index=list("甲乙丙"),
    columns=['name', 'score', 'grade'],
)

# print(df1_1, df1_2, df1_3, df2_1, sep="\n\n")

df1_1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值