一、DataFrame
DataFrame是什么?
1.1 DataFrame的创建
1.1.1 方式一:使用字典加列表创建df,使用默认自增索引
import pandas as pd
# 使用字典加列表创建df,使用默认自增索引
df1_data = {
'日期':['2021-08-21','2021-08-22','2021-08-23'],
'温度':[25,26,30],
'湿度':[81,90,79]
}
df1 = pd.DataFrame(data=df1_data)
df1
运行结果:
1.1.2 方式二、使用列表加元组创建df,并自定义索引
import pandas as pd
# 使用列表加元组创建df,并自定义索引
# 使用列表加元组创建df,并自定义索引
df2_data = [
('2024-09-10',23,90),
('2024-09-11',24,80),
('2024-09-12',25,85),
]
df2 = pd.DataFrame(
data = df2_data,
columns = ['日期','温度','湿度'],
index = ['row_1','row_2','row_3']
)
df2
1.1.3 方式三:使用numpy创建df
# 生成10名同学,5门功课的数据
score = np.random.randint(40, 100, (10, 5))
# 使用Pandas中的数据结构
score_df = pd.DataFrame(score)
# 增加行列索引
# 构造行索引序列
subjects = ["语文", "数学", "英语", "政治", "体育"]
# 构造列索引序列
stu = ['同学' + str(i) for i in range(score_df.shape[0])]
# 添加行索引
data = pd.DataFrame(score, columns=subjects, index=stu)
运行结果:
1.4 DataFrame索引的设置
原始数据:
1.4.1 修改行列索引值
# 1.修改行列索引值
stu = ['学生_' + str(i) for i in range(score_df.shape[0])]
# 必须整体全部修改
data.index = stu
data
# 注意:错误的修改方式
data.index[3] = '学生_3'
1.4.2 重设索引
# 重置索引,drop=False
data.reset_index()
drop:默认为False,不删除原来索引,如果为True,删除原来的索引值
data.reset_index(drop=True)
1.4.3 以某列值设置为新的索引
set_index(keys, drop=True)
keys : 列索引名成或者列索引名称的列表
drop : boolean, default True.当做新的索引,删除原来的列
第一步:创建DataFrame
# 创建DataFrame
df = pd.DataFrame({
'month':[1,4,7,10],
'year':[2012,2014,2013,2014],
'sale':[55,40,84,31]
})
df
第二步:以月份设置新的索引
df.set_index('month')
第三步:设置多个索引,以年和月份
df.set_index(['year','month'])