Pandas入门到精通(二)

关于DateFrame的介绍将在今天这篇文章中做详细的介绍。

DataFrame is a 2-dimensional labeled data structure with columns of potentially different types. You can think of it like a spreadsheet or SQL table, or a dict of Series objects. It is generally the most commonly used pandas object. Like Series, DataFrame accepts many different kinds of input:

简单来说 DateFrame 其实是一个二维的表格,你可以从字典,sql等相关数据结构中生成DateFrame。下面做一些简单的演示。

1、从字典里面生成一个 DateFrame

    # d是一个字典
    d = {
        "one": pd.Series([1.0, 2.0, 3.0], index=["a", "b", "c"]),
        "two": pd.Series([1.0, 2.0, 3.0, 4.0], index=["a", "b", "c", "d"]),
    }
    print(type(d))

    # 通过字典来创建一个DateFrame
    dateFrame_1 = pd.DataFrame(d)
    print(dateFrame_1)
output:
<class 'dict'>
   one  two
a  1.0  1.0
b  2.0  2.0
c  3.0  3.0
d  NaN  4.0

2、从 DateFrame 中生成 DateFrame

从上面已经生成的 DateFrame 中选择指定的行额外再生成一个 DateFrame, 注意,在 index 选中的行才会出现在新的 DateFrame 中。

    dateFrame_2 = pd.DataFrame(dateFrame_1,index=["a", "c", "d"])
    print(dateFrame_2)
   one  two
a  1.0  1.0
c  3.0  3.0
d  NaN  4.0

3、行列同时改变

不只是行可以改变,列也可以改变

    dateFrame_3 = pd.DataFrame(dateFrame_1, index=["a", "c", "d"], columns=["hong", "biao"])
    print(dateFrame_3)
   two  biao
a  1.0   NaN
c  3.0   NaN
d  4.0   NaN

4 、从列表或者 ndarray 中创建 DateFrame

    # d是一个字典
    d = {"one": [1.0, 2.0, 3.0, 4.0], "two": [4.0, 3.0, 2.0, 1.0]}
    date_4 = pd.DataFrame(d)
    print(date_4)
   one  two
0  1.0  4.0
1  2.0  3.0
2  3.0  2.0
3  4.0  1.0

注意 这里的 value 长度必须是一致,比如 two 后面的列表如果少了一个机会报错

5、从列表中生成 DateFrame

   data = np.zeros((2,), dtype=[("A", "i4"), ("B", "f4"), ("C", "a10")])
   print(data)
   [(0, 0., b'') (0, 0., b'')]

我知道肯定有人问后面的dtype表示啥意思 这里是通过元组来创建,那么如果元组只有一个元素需要在后面添加一个逗号 ,这里面的 dtype 表示的是三个元素的类型 1、i4类型 就是 int 类型 2、f4类型 就是 float 类型 3、a10类型 就是字符类型

具体参考dtype知识
同样,列 、行的名称都是可以修改的

6、从元组中生成 DateFrame

    data = pd.DataFrame(
        {
            ("a", "b"): {("A", "B"): 1, ("A", "C"): 2},
            ("a", "a"): {("A", "C"): 3, ("A", "B"): 4},
            ("a", "c"): {("A", "B"): 5, ("A", "C"): 6},
            ("b", "a"): {("A", "C"): 7, ("A", "B"): 8},
            ("b", "b"): {("A", "D"): 9, ("A", "B"): 10},
        }
    )
    print(data)
           a              b      
       b    a    c    a     b
A B  1.0  4.0  5.0  8.0  10.0
  C  2.0  3.0  6.0  7.0   NaN
  D  NaN  NaN  NaN  NaN   9.0

上面是一个多级索引的示例,我估计有些读者可能看不懂,那就先理解可以从元组中创建即可

7、从 namedtuples 集合中创建

    from collections import namedtuple
    point = namedtuple("Point", " x y")
    data = pd.DataFrame([point(0,0), point(1,1),point(4,3),])
    print(data)
   x  y
0  0  0
1  1  1
2  4  3

Point3D = namedtuple("Point3D", "x y z")

pd.DataFrame([Point3D(0, 0, 0), Point3D(0, 3, 5), Point(2, 3)])
Out[61]: 
   x  y    z
0  0  0  0.0
1  0  3  5.0
2  2  3  NaN

8、从数据类列表中创建 DateFrame

from dataclasses import make_dataclass
    point = make_dataclass("Point", [("x", int), ("y", int )])
    data = pd.DataFrame([point(0,1), point(1,1)])
    print(data)
   x  y
0  0  1
1  1  1

其实是规定好了类型,从对象里面获取数据

9、从字典里获取 DateFrame

    data = pd.DataFrame.from_dict(dict([("A", [1, 2, 3]), ("B", [4, 5, 6])]))
    print(data)
   A  B
0  1  4
1  2  5
2  3  6

OK 今天就到此为止

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值