关于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