前言
前面我们介绍了pandas Series数据结构,本篇文章我们来介绍另外一种pandas数据结构——DataFrame。
获取更多技术资料,请点击!
DataFrame
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。如下图所示:
DataFrame 构造方法如下:
pandas.DataFrame( data, index, columns, dtype, copy)
参数说明:
- data:一组数据(ndarray、series, map, lists, dict 等类型)
- index:索引值,或者可以称为行标签
- columns:列标签,默认为 RangeIndex (0, 1, 2, …, n)
- dtype:数据类型
- copy:拷贝数据,默认为 False
下面是我们的一个简单实例:
import pandas as pd
data = [['Muller',33],['Sane',27],['Reus',30]]
df = pd.DataFrame(data,columns=['Player','Age'],dtype=float)
print(df)
------------
输出结果如下:
Player Age
0 Muller 33.0
1 Sane 27.0
2 Reus 30.0
同样,我们也可以使用ndarrays 创建DataFrame,代码如下
import pandas as pd
data = {'Player':['Muller', 'Sane', 'Reus'], 'Age':[33, 27, 30]}
df = pd.DataFrame(data,columns=['Player','Age'],dtype=float)
print(df)
-------------------------------------
输出结果如下:
Player Age
0 Muller 33.0
1 Sane 27.0
2 Reus 30.0
注:ndarray 的长度必须相同, 如果传递了 index,则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引将是range(n),其中n是数组长度。
从以上输出结果可以知道, DataFrame 数据类型一个表格,包含 rows(行) 和 columns(列):
使用字典(key/value)创建DataFrame,代码如下:
import pandas as pd
data = [{'Muller': 18, 'Sane': 8}, {'Muller': 33, 'Sane': 27, 'Reus': 30}]
df = pd.DataFrame(data)
print(df)
--------------------------
输出结果如下:
Muller Sane Reus
0 18 8 NaN
1 33 27 30.0
注:没有对应的部分数据为 NaN
Pandas 可以使用 loc 属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1,实例如下:
import pandas as pd
data = {
"Goals": [27, 20, 18],
"Asts": [20, 16, 12]
}
# 数据载入到 DataFrame 对象
df = pd.DataFrame(data)
# 返回第一行
print(df.loc[0])
# 返回第二行
print(df.loc[1])
-----------------------
输出结果如下:
Goals 27
Asts 20
Name: 0, dtype: int64
Goals 20
Asts 16
Name: 1, dtype: int64
注:返回结果其实是一个 Pandas Series 数据。
也可以返回多行数据,使用 [[ ... ]] 格式,... 为各行的索引,以逗号隔开:
import pandas as pd
data = {
"Goals": [27, 20, 18],
"Asts": [20, 16, 12]
}
# 数据载入到 DataFrame 对象
df = pd.DataFrame(data)
print(df.loc[[0,1]])
--------------------
输出结果如下:
Goals Asts
0 27 20
1 20 16
同样地,我们也可以指定索引值,代码如下:
import pandas as pd
data = {
"goals": [35, 30, 28],
"asts": [15, 20, 22]
}
df = pd.DataFrame(data, index = ["2020", "2021", "2022"])
print(df)
--------------------------------------------
输出结果如下:
goals asts
2020 35 15
2021 30 20
2022 28 22
同样地,我们可以通过索引来返回某一行的数据,代码如下:
import pandas as pd
data = {
"goals": [35, 30, 28],
"asts": [15, 20, 22]
}
df = pd.DataFrame(data, index = ["2020", "2021", "2022"])
print(df.loc["2020"])
---------------------------------------
输出结果如下:
goals 35
asts 15
Name: 2020, dtype: int64
总结
本文主要介绍了pandas的DataFrame数据结构,DataFrame是一个表格型的数据结构,也可以看做是
由 Series 组成的字典,只是共用索引,DataFrame同样可以根据索引实返回指定数据。