pandas(三) -- DataFrame的基本操作

DataFrame的基本操作
数据查看、转置、 添加、修改、删除值 / 对齐 / 排序
1. 查看、转置、 添加、修改

df.head()#查看df头部元素
df.tail()#查看df的最后几个元素
df.T#转置

df.loc[4] = 20  # df索引为4的行的值设为20,如果df无索引为4的行,则添加这行
df['e'] = 20  #df列名为‘e’的值设为20,如果df列名为‘e’的列,则添加这行
df[['a','c']] = 100  #同时设两列

2. 删除
df

    a          b          c          d
0  18.508749  55.076623  31.351921  97.197084
1   6.225724  38.386008  26.030686  37.091972
2  90.739194   7.106155  69.594075  10.862557
3  34.379840  33.543922  14.466034  39.377378
  • del 删除列
del df['a']#原始数据会改变,无返回,输出会报错
print(df)
           b          c          d
0  55.076623  31.351921  97.197084
1  38.386008  26.030686  37.091972
2   7.106155  69.594075  10.862557
3  33.543922  14.466034  39.377378
  • drop()删除行,inplace=False → 删除后生成新的数据,不改变原数据.inplace=True → 删除后不生成新的数据,改变原数据
print(df.drop(0))
print('*'*20)
print(df)
 b          c          d
1  38.386008  26.030686  37.091972
2   7.106155  69.594075  10.862557
3  33.543922  14.466034  39.377378
********************
           b          c          d
0  55.076623  31.351921  97.197084
1  38.386008  26.030686  37.091972
2   7.106155  69.594075  10.862557
3  33.543922  14.466034  39.377378

drop()删除列,需要加上axis = 1,inplace=False → 删除后生成新的数据,不改变原数据

print(df.drop(['d'], axis = 1))
print(df)

 b          c
0  55.076623  31.351921
1  38.386008  26.030686
2   7.106155  69.594075
3  33.543922  14.466034
           b          c          d
0  55.076623  31.351921  97.197084
1  38.386008  26.030686  37.091972
2   7.106155  69.594075  10.862557
3  33.543922  14.466034  39.377378

3. 对齐
DataFrame对象之间的数据自动按照列和索引(行标签)对齐

df1 = pd.DataFrame(np.random.randn(5, 4), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.random.randn(4, 3), columns=['A', 'B', 'C'])
print(df1)
print(df2)
print(df1 + df2)

有相同的index和columns的,相加,没有的用NaN填充

 A         B         C         D
0  0.936158  0.176731  0.057894  1.378480
1 -0.845350 -1.315490  1.364016  0.068843
2  1.202603 -1.866056 -1.243468 -2.464771
3 -1.027430 -0.090378  0.772160  0.421877
4  0.599495 -0.512279  0.343464 -0.539533
          A         B         C
0 -0.749239  0.468161 -1.300230
1  1.318669  0.415610  1.224801
2 -1.582607  0.297839  0.225834
3 -0.639544  0.187458  0.498859
          A         B         C   D
0  0.186919  0.644892 -1.242336 NaN
1  0.473319 -0.899880  2.588817 NaN
2 -0.380003 -1.568217 -1.017634 NaN
3 -1.666974  0.097081  1.271019 NaN
4       NaN       NaN       NaN NaN

4. 排序

  • 按值排序.sort_values,同样适用于Series
    按‘a’列的值升序排列
df1 = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
                   columns = ['a','b','c','d'])
print(df1)
print(df1.sort_values(['a'], ascending = True))  # 升序.ascending 上升的。ascending =False,降序排列
df
a          b          c          d
0   3.570340  86.589786  98.001894  50.984826
1  46.210527  83.412502  74.492003  73.251724
2  91.115360   6.083352  34.314697  56.784097
3  24.781722  67.813376  65.004312  31.788198

排序后结果

 a          b          c          d
0   3.570340  86.589786  98.001894  50.984826
3  24.781722  67.813376  65.004312  31.788198
1  46.210527  83.412502  74.492003  73.251724
2  91.115360   6.083352  34.314697  56.784097

print(df1.sort_values(['a','c'])) 多列排序,按列顺序排序

  • 索引排序 .sort_index
df1 = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
                  index = [5,4,3,2],
                   columns = ['a','b','c','d'])
print(df1)
print(df1.sort_index())
 a          b          c          d
5  80.932585  71.991854  64.582943  23.443231
4  82.054030  87.459058  12.108433  83.047490
3  56.329863  14.926822  47.884418  59.880352
2   0.347007  69.794103  74.375345  12.736429
           a          b          c          d
2   0.347007  69.794103  74.375345  12.736429
3  56.329863  14.926822  47.884418  59.880352
4  82.054030  87.459058  12.108433  83.047490
5  80.932585  71.991854  64.582943  23.443231
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值