主页 > 人工智能  > 

「pandas」Pandas基本数据操作、索引、赋值、排序

「pandas」Pandas基本数据操作、索引、赋值、排序
「pandas」Pandas 基本数据操作、 索引、赋值、排序

更多内容请关注本人【pandas】专栏


【目录】

索引操作赋值操作排序操作 一、索引操作 score = np.random.randint(100, size=(6, 3)) names = ["同学1", "同学2", "同学3"] period = ["期中", "期末"] columns = ["语文", "英语", "数学"] index = pd.MultiIndex.from_product([names, period]) df = pd.DataFrame(score, index=index, columns=columns) print(df) # 运行结果 语文 英语 数学 同学1 期中 65 43 91 期末 2 8 2 同学2 期中 22 44 87 期末 68 43 17 同学3 期中 6 8 50 期末 87 41 18 1.1 直接索引,行列索引(先行后列) print(df['语文']['同学1']) # 先行后列 # 运行结果 期中 65 期末 2 Name: 语文, dtype: int32 1.2 loc函数索引

基于标签的索引器,用于通过行标签和列标签选择数据。

参数:行索引,列索引

单个标签(例如 df.loc['row_label', 'col_label'])标签列表(例如 df.loc[['row1', 'row2'], ['col1', 'col2']])切片(例如 df.loc['row1':'row2', 'col1':'col2'])布尔数组(例如 df.loc[df['col'] > 0]) # 单个标签 print(df["同学1", "语文"]) # 运行结果 期中 65 期末 2 Name: 语文, dtype: int32 # 标签列表 print(df.loc[["同学1", "同学2"], ["语文", "数学"]]) # 运行结果 语文 数学 同学1 期中 65 91 期末 2 2 同学2 期中 22 87 期末 68 17 # 切片 print(df.loc["同学1":"同学2", "语文": "数学"]) # 从结果上看这个是闭区间 # 运行结果 语文 英语 数学 同学1 期中 65 43 91 期末 2 8 2 同学2 期中 22 44 87 期末 68 43 17 # 布尔数组 print(df.loc[df["数学"] > 60]) # 运行结果 语文 英语 数学 同学1 期中 65 43 91 同学2 期中 22 44 87 1.3 iloc函数索引

基于位置的索引器,用于通过行和列的整数位置选择数据

参数:行索引,列索引

单个整数(例如 df.iloc[0, 1])整数列表(例如 df.iloc[[0, 1], [1, 2]])切片(例如 df.iloc[0:2, 1:3])布尔数组(例如 df.iloc[df['col'] > 0]) # 单个整数 print(df.iloc[0, 2], end='\n\n') # 运行结果 91 # 整数列表 print(df.iloc[[0, 1], [1, 2]], end='\n\n') # 运行结果 英语 数学 同学1 期中 43 91 期末 8 2 # 切片 print(df.iloc[0:2, 1:2], end='\n\n') # 运行结果 英语 同学1 期中 43 期末 8 二、赋值操作 修改单个值修改整列值修改多列添加新列使用条件赋值apply、assign修改行数据at、iatmask和where # DataFrame示例 df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['x', 'y', 'z']) # 运行结果 A B x 1 4 y 2 5 z 3 6 2.1 修改单个值 # 使用 loc 修改单个值 df.loc['x', 'A'] = 10 # 使用 iloc 修改单个值 df.iloc[1, 1] = 20 # 运行结果 A B x 10 4 y 2 20 z 3 6 2.2 修改整列值 df['A'] = [100, 200, 300] # 运行结果 A B x 100 4 y 200 20 z 300 6 2.3 修改多列 df[['A', 'B']] = [[1, 2], [3, 4], [5, 6]] # 运行结果 A B x 1 2 y 3 4 z 5 6 2.4 添加新列 df['C'] = [7, 8, 9] # 运行结果 A B C x 1 2 7 y 3 4 8 z 5 6 9 2.5 使用条件赋值 # 将列 'A' 中大于 2 的值修改为 100 df.loc[df['A'] > 2, 'A'] = 100 # 运行结果 A B C x 1 2 7 y 100 4 8 z 100 6 9 2.6 apply、assign apply # 对列 'A' 的值加倍 df['A'] = df['A'].apply(lambda x: x * 2) # 运行结果 A B C x 2 2 7 y 200 4 8 z 200 6 9 assignassign 方法可以创建新列或覆盖现有列,并返回一个新的 DataFrame(原 DataFrame 不会被修改)。 # 添加新列 'D',其值为列 'A' 和 'B' 的和 df_new = df.assign(D=df['A'] + df['B']) # 运行结果 A B C D x 2 2 7 4 y 200 4 8 204 z 200 6 9 206 2.7 修改行数据 # 修改行 'x' 的所有值 df.loc['x'] = [10, 20, 30] # 运行结果 A B C x 10 20 30 y 200 4 8 z 200 6 9 2.8 at、iat,用于快速访问和修改单个值的方法 at : 基于标签iat : 基于位置 # 使用 at 修改单个值 df.at['x', 'A'] = 100 # 使用 iat 修改单个值 df.iat[1, 1] = 50 # 运行结果 A B C x 100 20 30 y 200 50 8 z 200 6 9 2.9 mask 和 where 赋值 mask:将满足条件的值替换为指定值。where:将不满足条件的值替换为指定值。 # 使用 mask 将列 'A' 中大于 100 的值替换为 -1 df['A'] = df['A'].mask(df['A'] > 100, -1) # 使用 where 将列 'B' 中小于等于 20 的值替换为 -1 df['B'] = df['B'].where(df['B'] > 20, -1) # 运行结果 A B C x 100 -1 30 y -1 50 8 z -1 -1 9 三、Series、 DataFrame 排序

Series

对象.sort_index(ascending=True, inplace=False)对象.sort_values(ascending=True, inplace=False, na_position=‘last’)

DataFrame

对象.sort_index(axis=0, ascending=True, inplace=False)对象.sort_values(by, ascending=True, inplace=False, na_position=‘last’)

参数解释:

ascending : 升序, 默认 Trueinplace : 原地修改, 默认False, 则返回一个新的对象na_position: 缺失值的位置,'last'(默认)或 'first'。by:排序依据的列名或列名列表。 3.1 Series 排序 s = pd.Series([3, 1, 4, 1, 5], index=['a', 'b', 'c', 'd', 'e']) # 按值升序排序 sorted_s = s.sort_values() # 运行结果 b 1 d 1 a 3 c 4 e 5 dtype: int64 # 按索引降序排序 sorted_s = s.sort_index(ascending=False) e 5 d 1 c 4 b 1 a 3 dtype: int64 3.2 DataFrame 排序 单列排序多列排序 df = pd.DataFrame({ 'A': [3, 1, 4, 1, 5], 'B': [9, 2, 5, 3, 8], 'C': [7, 6, 8, 4, 2] }) # 按单列 'A' 升序排序 sorted_df = df.sort_values(by='A') # 运行结果 A B C 1 1 2 6 3 1 3 4 0 3 9 7 2 4 5 8 4 5 8 2 # 多列排序 按列 'A' 升序,列 'B' 降序排序 sorted_df = df.sort_values(by=['A', 'B'], ascending=[True, False]) # 运行结果 A B C 3 1 3 4 1 1 2 6 0 3 9 7 2 4 5 8 4 5 8 2 # 按行索引降序排序 sorted_df = df.sort_index(ascending=False) # 运行结果 A B C 4 5 8 2 3 1 3 4 2 4 5 8 1 1 2 6 0 3 9 7 3.3 处理缺失值

在排序时,可以通过 na_position 参数控制缺失值的位置。

# 创建一个包含缺失值的 DataFrame df = pd.DataFrame({ 'A': [3, 1, None, 1, 5], 'B': [9, 2, 5, 3, 8] }) # 按列 'A' 排序,缺失值放在最前面 sorted_df = df.sort_values(by='A', na_position='first') # 运行结果 A B 2 NaN 5 1 1.0 2 3 1.0 3 0 3.0 9 4 5.0 8
标签:

「pandas」Pandas基本数据操作、索引、赋值、排序由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“「pandas」Pandas基本数据操作、索引、赋值、排序