【DataFrame】【翻译】一起来读官方文档

pandas dataframe 文档阅读笔记。

dataframe是一个2维的有标签数据结构,它每一列元素可以是不同的类型。

可以通过行索引或者是列索引对数据进行索引,DataFrame结构的行索引称为index,纵索引称为columns。

可以通过 df.index、df.columns返回df的索引。

可以将dict结构数据转化为DataFrame结构,默认情况下,dict中的keys对应dataframe中的columns。那么index值该怎么办呢?

假设没有对index指定,那么index默认为range(n)

可以在转换时通过index参数对其设定:

In [44]: d = {"one": [1.0, 2.0, 3.0, 4.0], "two": [4.0, 3.0, 2.0, 1.0]}
​
In [45]: pd.DataFrame(d)
Out[45]: 
one  two
0  1.0  4.0
1  2.0  3.0
2  3.0  2.0
3  4.0  1.0
​
In [46]: pd.DataFrame(d, index=["a", "b", "c", "d"])
Out[46]: 
one  two
a  1.0  4.0
b  2.0  3.0
c  3.0  2.0
d  4.0  1.0

np.nan 表示缺失值

group by文档翻译:

Group by : 拆分-应用-组合

'https://pandas.pydata.org/docs/user_guide/groupby.html'

"group by"使用场景,如下所示:

  1. 拆分:根据某些标准将数据分组。

  2. 应用:对每个组的数据分别应用某个函数。

  3. 汇合:将所有的结果组合,汇总。

其中,最直接的步骤是 1.拆分 步骤。一般情况下,我们希望将数据集分组,并对不同的组进行操作。在使用过程中,我们可以进行以下操作

  • 聚合:计算每个组的统计量,例如:

    • 计算每组数据的求和,均值

    • 计算每个组的大小

  • 转换:执行针对于组的计算,并返回一个类似索引的对象,例如:

    • 标准化组内的数据

    • 用每个组派生的值填充组内的空值(NA)

  • 过滤:根据筛选规则对每个组进行筛选,丢弃不满足要求的数据组,例如:

    • 删除只有少量数据的一组数据。

    • 根据组的和或者是组的均值来筛选数据组

  • 以上三种操作的组合:GroupBy will examine the results of the apply step and try to return a sensibly combined result if it doesn’t fit into either of the above two categories.

我们希望在每个数据组中调用函数,而非整个数据集。所以此处的思想与SQL中的GroupBy是相同的,我们希望你可以在python中编写类似下列代码的处理方式:

SELECT Column1, Column2, mean(Column3), sum(Column4)
FROM SomeTable
GROUP BY Column1, Column2

我们的目标就是pandas自然的实现上述功能。我们将在各个领域使用pandas,通过一些示例展示其使用方法。

See the cookbook for some advanced strategies.在这里可以看到高级使用方法。

将对象拆分成组

pandas可以在它的任何维度上拆分。对分组抽象的定义提供了一种从标签到组名的映射关系。将一个进行分组,可以有以下操作:

In [1]: df = pd.DataFrame(
   ...:     [
   ...:         ("bird", "Falconiformes", 389.0),
   ...:         ("bird", "Psittaciformes", 24.0),
   ...:         ("mammal", "Carnivora", 80.2),
   ...:         ("mammal", "Primates", np.nan),
   ...:         ("mammal", "Carnivora", 58),
   ...:     ],
   ...:     index=["falcon", "parrot", "lion", "monkey", "leopard"], #指定索引名称
   ...:     columns=("class", "order", "max_speed"),                 #指定列名
   ...: )
   ...: 
​
In [2]: df
Out[2]: 
          class           order  max_speed
falcon     bird   Falconiformes      389.0
parrot     bird  Psittaciformes       24.0
lion     mammal       Carnivora       80.2
monkey   mammal        Primates        NaN
leopard  mammal       Carnivora       58.0
​
# default is axis=0
In [3]: grouped = df.groupby("class")
​
In [4]: grouped = df.groupby("order", axis="columns")
​
In [5]: grouped = df.groupby(["class", "order"])

在此处原文有一句这样的话,

default is axis=0

这句话的意思是默认axis=0

那么axis=0指的是什么呢?

axis=0代表行操作

axis=1代表列操作

pandas对关键字axis关键字的用法保持了NumPy的用法:

轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。

详细内容可以看这里

这个映射关系可以通过很多方式进行定义:

  • 设定一个函数,对每一个axis的label进行操作

  • 与所选axis长度的list或者是ndarray

  • dict series 提供label->group name 的映射

  • 对于 DataFrame 对象,使用一个字符串,指示要用于分组的列名称或索引级别名称。

  • df.groupby('A')指的是df.groupby(df['A'])

  • 上述的组合

我们将分组对象统称为keys。例如:

注意:

使用groupby分组的对象可以是column或者是index。如果该字符串与column的名字或者是index的名字相同,会引发 ValueError

    import numpy as np
    import pandas as pd
    df = pd.DataFrame(
        {
            "A": ["foo", "bar", "foo", "bar"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值