爬虫与Python:(四)爬虫进阶扩展之Pandas——4.数据结构DataFrame
1. 定义
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
2. 构造方法
pandas.DataFrame( data, index, columns, dtype, copy)
3. 参数说明
属性 | 描述 |
data | 一组数据(ndarray、series, map, lists, dict 等类型) |
index | 索引值,或者可以称为行标签 |
columns | 列标签,默认为 RangeIndex (0, 1, 2, …, n) |
dtype | 数据类型 |
copy | 拷贝数据,默认为 Fals |
4. 示例
4.1 使用列表创建DataFrame
1 import pandas as pd 2 3 # 使用列表创建 4 data = [['Google',10],['Runoob',12],['Wiki',13]] 5 df = pd.DataFrame(data,columns=['Site','Age'],dtype=float) 6 print(df)
输出结果如下:
4.2 使用ndarrays创建DataFrame
以下实例使用 ndarrays 创建,ndarray 的长度必须相同, 如果传递了 index,则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引将是range(n),其中n是数组长度。
ndarrays 可以参考:NumPy Ndarray 对象
1 import pandas as pd 2 3 # 使用ndarrys创建 4 data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]} 5 df = pd.DataFrame(data) 6 print (df)
输出结果如下:
从以上输出结果可以知道, DataFrame 数据类型一个表格,包含 rows(行) 和 columns(列):
4.3 使用字典DataFrame
还可以使用字典(key/value),其中字典的 key 为列名:
import pandas as pd # 使用字典创建DataFrame data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}] df = pd.DataFrame(data) print (df)
输出结果为:
a b c 0 1 2 NaN 1 5 10 20.0
没有数据的部分对应NaN。
4.4 返回指定行属性
Pandas 可以使用 loc 属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1,以此类推:
1 import pandas as pd 2 3 # 返回指定行属性 4 data = { 5 "calories": [420, 380, 390], 6 "duration": [50, 40, 45] 7 } 8 # 数据载入到 DataFrame 对象 9 df = pd.DataFrame(data) 10 # 返回第一行 11 print(df.loc[0]) 12 # 返回第二行 13 print(df.loc[1])
输出结果如下:
calories 420 duration 50 Name: 0, dtype: int64 calories 380 duration 40 Name: 1, dtype: int64
返回结果其实就是一个 Pandas Series 数据。
4.5 返回多行属性
也可以返回多行数据,使用 [[ ... ]] 格式,... 为各行的索引,以逗号隔开。
1 import pandas as pd 2 3 # 返回DataFrame的多行属性 4 data = { 5 "calories": [420, 380, 390], 6 "duration": [50, 40, 45] 7 } 8 # 数据载入到 DataFrame 对象 9 df = pd.DataFrame(data) 10 # 返回第一行和第二行 11 print(df.loc[[0, 1]])
输出结果为:
calories duration
0 420 50
1 380 40
4.6 指定索引的值
我们可以指定索引值,例如:
import pandas as pd # 为DataFrame指定索引值 data = { "calories": [420, 380, 390], "duration": [50, 40, 45] } df = pd.DataFrame(data, index = ["day1", "day2", "day3"]) # 指定索引 print(df.loc["day2"])
运行结果如下:
calories 380 duration 40 Name: day2, dtype: int64
5. 参考网址
有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。