DataFrame
DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】(共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。
- 行索引:index 代表样本
- 列索引:columns 代表维度
- 值:values(numpy的二维数组)
1)DataFrame的创建
最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。
此外,DataFrame会自动加上每一行的索引(和Series一样)。
同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。
DataFrame的创建
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
通过 DateFrame 函数 创建
df = DataFrame([1,2,3,4])
结果为:
0
0 1
1 2
2 3
3 4
df = DataFrame([1,2,3,4],index=list("abcd"))
结果为:
0
a 1
b 2
c 3
d 4
data = np.random.randint(0,150,size=(4,4))
index = ["张三","李四","王五","赵柳"]
columns = ["Math","Chinese","English","Python"]
df = DataFrame(data,index=index,columns=columns)
df
结果为:如下表
Math | Chinese | English | Python | |
---|---|---|---|---|
张三 | 10 | 145 | 15 | 11 |
李四 | 125 | 97 | 71 | 130 |
王五 | 149 | 79 | 149 | 67 |
赵柳 | 133 | 26 | 135 | 70 |
DataFrame属性:values、columns、index、shape
df.values #所有的值
结果为:
array([[ 10, 145, 15, 11],
[125, 97, 71, 130],
[149, 79, 149, 67],
[133, 26, 135, 70]])
df.columns # 每一列的标题
结果为:
Index(['Math', 'Chinese', 'English', 'Python'], dtype='object')
df.index #每一行的标题
结果为:
Index(['张三', '李四', '王五', '赵柳'], dtype='object')
df.shape
结果为:
(4, 4)
============================================
练习4:
根据以下考试成绩表,创建一个DataFrame,命名为df:
张三 李四
语文 150 0
数学 150 0
英语 150 0
理综 300 0
============================================
data = [[150,0],[150,0],[150,0],[150,0]]
index = ["语文","数学","英语","理综"]
columns = ["张三","李四"]
DataFrame(data=data,index=index,columns=columns)
张三 | 李四 | |
---|---|---|
语文 | 150 | 0 |
数学 | 150 | 0 |
英语 | 150 | 0 |
理综 | 150 | 0 |
2)DataFrame的索引
(1) 对列进行索引
- 通过类似字典的方式
- 通过属性的方式
可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。
每一行是一个样本 每一列是描述这个样本的维度
df
Math | Chinese | English | Python | |
---|---|---|---|---|
张三 | 10 | <