四、数据操作
1、数据的增加
1.1 按列增加数据
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]] index = ['张三', '李四', '王五'] columns = ['数学', '语文', '英语'] df = pd.DataFrame(data=data, index=index, columns=columns) print(df) print('-------------------------') # 1、直接赋值 df['政治'] = [90, 89, 100] print(df) print('-------------------------') # 2、使用loc属性在DataFrame对象的最后一列增加 df.loc[:, '化学'] = [100, 30, 98] print(df) print('-------------------------') # 3、在指定的索引位置上插入一列 lst = [100, 90, 99] df.insert(1, '历史', lst) print(df)
数学 语文 英语 张三 45 65 100 李四 56 45 50 王五 67 67 67 ------------------------- 数学 语文 英语 政治 张三 45 65 100 90 李四 56 45 50 89 王五 67 67 67 100 ------------------------- 数学 语文 英语 政治 化学 张三 45 65 100 90 100 李四 56 45 50 89 30 王五 67 67 67 100 98 ------------------------- 数学 历史 语文 英语 政治 化学 张三 45 100 65 100 90 100 李四 56 90 45 50 89 30 王五 67 99 67 67 100 98
1.2 按行增加数据
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]] index = ['张三', '李四', '王五'] columns = ['数学', '语文', '英语'] df = pd.DataFrame(data=data, index=index, columns=columns) print(df) print('-------------------------') # 1、增加一行 df.loc['陈六'] = [56, 67, 90] print(df) print('-------------------------') # 新建DataFrame new_df = pd.DataFrame( data={'数学': [67, 69], '语文': [56, 78], '英语': [100, 99]}, index=['张丽丽', '王一一'] ) print(new_df) print('-------------------------') # 2、一个添加到另一个 df = df.append(new_df) print(df)
数学 语文 英语 张三 45 65 100 李四 56 45 50 王五 67 67 67 ------------------------- 数学 语文 英语 张三 45 65 100 李四 56 45 50 王五 67 67 67 陈六 56 67 90 ------------------------- 数学 语文 英语 张丽丽 67 56 100 王一一 69 78 99 ------------------------- 数学 语文 英语 张三 45 65 100 李四 56 45 50 王五 67 67 67 陈六 56 67 90 张丽丽 67 56 100 王一一 69 78 99
1.3 增加多行数据
见上!
2、数据的修改
2.1 修改列标题
- 使用DataFrame对象的columns属性直接赋值
- 使用DataFrame对象的rename方法修改列标题
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]] index = ['张三', '李四', '王五'] columns = ['数学', '语文', '英语'] df = pd.DataFrame(data=data, index=index, columns=columns) print(df) print('-------------------------') # 1、直接使用columns属性 df.columns = ['数学(上)', '语文(上)', '英语(上)'] print(df) print('-------------------------') # 2、rename inplace=True 直接修改并返回 df.rename(columns={'数学(上)': '数学(下)', '语文(上)': '语文(下)', '英语(上)': '英语(下)'}, inplace=True) print(df)
数学 语文 英语 张三 45 65 100 李四 56 45 50 王五 67 67 67 ------------------------- 数学(上) 语文(上) 英语(上) 张三 45 65 100 李四 56 45 50 王五 67 67 67 ------------------------- 数学(下) 语文(下) 英语(下) 张三 45 65 100 李四 56 45 50 王五 67 67 67
2.2 修改行标题
- 使用DataFrame对象的index属性
- 使用DataFrame对象的rename方法
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]] index = ['张三', '李四', '王五'] columns = ['数学', '语文', '英语'] df = pd.DataFrame(data=data, index=index, columns=columns) print(df) print('-------------------------') # 1、直接赋值 df.index = list('123') print(df) print('-------------------------') # 2、rename df.rename({'1': '一一', '2': '二二', '3': '三三'}, inplace=True, axis=0) print(df)
数学 语文 英语 张三 45 65 100 李四 56 45 50 王五 67 67 67 ------------------------- 数学 语文 英语 1 45 65 100 2 56 45 50 3 67 67 67 ------------------------- 数学 语文 英语 一一 45 65 100 二二 56 45 50 三三 67 67 67
2.3 修改数据
- 使用DataFrame对象的loc属性和iloc属性
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]] index = ['张三', '李四', '王五'] columns = ['数学', '语文', '英语'] df = pd.DataFrame(data=data, index=index, columns=columns) print(df) print('-------------------------') # 修改一整行数据 df.loc['张三'] = [100, 100, 100] print(df) print('-------------------------') df.iloc[0, :] = [111, 111, 111] # 第0行的所有列 print(df) print('-------------------------') # 修改一整列数据 df.loc[:, '数学'] = [100, 100, 100] print(df) print('-------------------------') df.iloc[:, 0] = [111, 111, 111] print(df) print('-------------------------') # 修改某一处数据 df.loc['李四', '语文'] = 100 print(df) print('-------------------------') df.iloc[1, 1] = 666 print(df)
数学 语文 英语 张三 45 65 100 李四 56 45 50 王五 67 67 67 ------------------------- 数学 语文 英语 张三 100 100 100 李四 56 45 50 王五 67 67 67 ------------------------- 数学 语文 英语 张三 111 111 111 李四 56 45 50 王五 67 67 67 ------------------------- 数学 语文 英语 张三 100 111 111 李四 100 45 50 王五 100 67 67 ------------------------- 数学 语文 英语 张三 111 111 111 李四 111 45 50 王五 111 67 67 ------------------------- 数学 语文 英语 张三 111 111 111 李四 111 100 50 王五 111 67 67 ------------------------- 数学 语文 英语 张三 111 111 111 李四 111 666 50 王五 111 67 67
3、数据的删除
- 使用DataFrame对象的drop方法
df.drop(labels=None, axis=0, index=None, columns=None, inplace=False)
参数说明:
- labels:行标签或列标签
- axis
- axis=0:按行删除
- axis=1:按列删除
- index:删除行,默认值为None
- columns:删除列,默认值为None
- inplace:对原数组作出修改并返回一个新数组,默认值为False。如果值为True,那么原数组将直接被替换。
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]] index = ['张三', '李四', '王五'] columns = ['数学', '语文', '英语'] df = pd.DataFrame(data=data, index=index, columns=columns) print(df) print('-------------------------') # 一、删除某一列 # # 方法1: # df.drop(['数学'], axis=1, inplace=True) # print(df) # print('-------------------------') # # 方法2: # df.drop(columns='数学', inplace=True) # print(df) # print('-------------------------') # # 方法3: # df.drop(labels='数学', axis=1, inplace=True) # print(df) # print('-------------------------') # 二、删除某一行 # # 方法1: # df.drop(['张三'], axis=0, inplace=True) # print(df) # print('-------------------------') # # 方法2: # df.drop(index='张三', inplace=True) # print(df) # print('-------------------------') # # 方法3: # df.drop(labels='张三', axis=0, inplace=True) # print(df) # print('-------------------------') # 三、有条件的删除:删除数学<60 print(df[df['数学'] < 60].index[1]) df.drop(df[df['数学'] < 60].index[1], inplace=True) # 数学成绩小于60,有张三和李四,删除行索引1的李四 print(df)
数学 语文 英语 张三 45 65 100 李四 56 45 50 王五 67 67 67 ------------------------- 李四 数学 语文 英语 张三 45 65 100 王五 67 67 67