1、DataFrame简介
DataFrame是一种二维的数据结构,可以认为是Series结构的字典,即列名(columns labels)为键,每一列的值为一个Series,为字典的值
2、DataFrame的创建
通过字典创建
通过字典创建时,以字典的键为列名,相应的值为各行的值。可以指定index和columns的值,若指定了但给出的字典中无相应值,则以NaN填充
dict = {"name":["小张", "小罗", "小周"], "age":[22, 23, 20], "gender":["female", "female", "male"]}
df = pd.DataFrame(data=dict, index=["p1", "p2", "p3"])
输出结果:
name age gender
p1 小张 22 female
p2 小罗 23 female
p3 小周 20 male
通过列表创建
通过列表创建,是按行来创建的
df = pd.DataFrame(data=[["小张",22,"female"],["小罗",23,"female"],["小周",20,"male"]], columns=["name","age","gender"], index=["p1", "p2", "p3"])
输出结果:
name age gender
p1 小张 22 female
p2 小罗 23 female
p3 小周 20 male
3、DataFrame的值获取
示例:
name age gender
p1 小张 22 female
p2 小罗 23 female
p3 小周 20 male
获取列
形式:DataFrame[“列名”] 或 DataFrame.列名
df["name"]
df.name
# 输出结果:
p1 小张
p2 小罗
p3 小周
Name: name, dtype: object
获取多列,使用列表
df[["name", "gender"]]
# 输出结果:
name gender
p1 小张 female
p2 小罗 female
p3 小周 male
获取行
形式:DataFrame.loc[“行名”] 或 DataFrame.iloc[i]
df.loc["p2"]
df.iloc[1]
输出结果:
name 小罗
age 23
gender female
Name: p2, dtype: object
获取多行,使用列表
df.iloc[[0,2]]
df.loc[["p1", "p3"]]
输出结果:
name age gender
p1 小张 22 female
p3 小周 20 male
获取某个值
# 四种方法输出结果相同
df["name"]["p1"]
df["name"][0]
df.loc["p1"][0]
df.iloc[0][0]
# 输出结果:
'小张'
df.loc[["p1","p2"]][["name", "gender"]]
df[["name", "gender"]].loc[["p1", "p2"]]
# 输出结果:
name gender
p1 小张 female
p2 小罗 female
通过at和iat获取值
使用at和iat时,只能获取某一个值,不能获取一行或一列的值
df.at["p1", "name"] #输出结果:'小张'
df.at["p1", ["name", "gender"]] #报错
df.at[["p1", "p2"], "name"] #报错
at/iat还可以和loc/iloc联用
df.loc["p2"].at["name"] #输出结果:'小罗'
df.at["p2"].loc["name"] #报错
注:只能loc/iloc在前,at/iat在后
4、DataFrame的属性
示例:
name age gender
p1 小张 22 female
p2 小罗 23 female
p3 小周 20 male
index、columns、values属性:
print(df.index) # 输出结果:Index(['p1', 'p2', 'p3'], dtype='object')
print(df.columns) #输出结果:Index(['names', 'age', 'gender'], dtype='object')
print(df.values)
# 输出结果:
[['小张' 22 'female']
['小罗' 23 'female']
['小周' 20 'male']]
size、shape属性:
df.size #输出结果:9
df.shape #输出结果:(3, 3)
axes属性
相当于index和columns的结合使用
df.axes
# 输出结果:
[Index(['p1', 'p2', 'p3'], dtype='object'),
Index(['name', 'age', 'gender'], dtype='object')]
empty属性
判断DataFrame是否为空
df.empty #输出结果:False