数据分析 | 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[行,列]

# 另外运算上,有广播机制,保证索引一直,可以直接加减乘除

posted @ 2024-06-26 11:27  abloger  阅读(32)  评论(0)    收藏  举报