数据分析 | DataFrame的增删改查
创建原始数据
pd.set_option('display.unicode.east_asian_width', True) # 解决数据输出时列名对不齐的问题
# 第一种方法:字典套字典
data = {"001": {"姓名": "小陈", "考试1": 85, "考试2": 95, "考试3": 92},
"002": {"姓名": "小李", "考试1": 91, "考试2": 92, "考试3": 94},
"003": {"姓名": "小王", "考试1": 86, "考试2": 81, "考试3": 89},
"004": {"姓名": "小张", "考试1": 79, "考试2": 89, "考试3": 95},
"005": {"姓名": "小赵", "考试1": 96, "考试2": 91, "考试3": 91},
"006": {"姓名": "小周", "考试1": 81, "考试2": 89, "考试3": 92}}
students = pd.DataFrame(data) # 新建df对象
''' 001 002 003 004 005 006
姓名 小陈 小李 小王 小张 小赵 小周
考试1 85 91 86 79 96 81
考试2 95 92 81 89 91 89
考试3 92 94 89 95 91 92'''
# 第二种:先建series或者列表,再按字典传入
name = pd.Series(['小陈', '小李', '小王', '小张', '小赵', '小周'], index=["001", "002", "003", "004", "005", "006"])
gender = pd.Series(['女', '女', '男', '男', '女', '男'], index=["006", "005", "004", "003", "002", "001"])
height = pd.Series([172.5, 168.0, 178.2, 181.3, 161.7], index=["001", "002", "003", "004", "005"])
people = pd.DataFrame({'Name': name, 'Gender': gender, 'Height': height})
转置
students = students.T
''' 姓名 考试1 考试2 考试3
001 小陈 85 95 92
002 小李 91 92 94
003 小王 86 81 89
004 小张 79 89 95
005 小赵 96 91 91
006 小周 81 89 92 '''
增
# 增加行
average = 一个行索引一致的数组(即,索引是姓名 考试1 考试2 考试3)
students.loc['007'] = average
# 增加列
average = 一个列索引一致的数组(即,索引是001.....006)
students.loc[:, '考试4'] = average
'''df.loc[行,列]这个函数就是第一个参数是行,第二个参数是列。想要改变行,可以没有第二个参数;但是想要改变列,只能先填上行参数,再填写列参数'''
删
drop:第一个参数想删除的某行或列,第二个参数axis=0(行)/axis=1(列)。这会生成一个新数组,不会直接改变原数组。如果想直接改变,还可以填上inplace = True
'''输出 students 删除索引为006、007的结果,但不要改变students本身。'''
students1 = students.drop(["006", "007"])
'''输出 students 删除列名为“考试2”、“考试4”的结果,但不要改变 students 本身'''
students2 = students.drop(["考试2", "考试4"], axis=1)
改和查
# 都由这个函数决定
df.loc[行,列]
# 另外运算上,有广播机制,保证索引一直,可以直接加减乘除

浙公网安备 33010602011771号