查看dataframe的几种基础函数

import numpy as np
import pandas as pd
#日期作为索引,生成dataframe
dates = pd.date_range('20210821', periods=6)
dates
DatetimeIndex(['2021-08-21', '2021-08-22', '2021-08-23', '2021-08-24',
               '2021-08-25', '2021-08-26'],
              dtype='datetime64[ns]', freq='D')
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list("ABCD"))#指定index以及columns
df
ABCD
2021-08-210.291046-1.182064-0.828510-0.050328
2021-08-220.1698170.372991-0.0093430.667243
2021-08-230.539149-1.772332-0.564575-0.136001
2021-08-24-0.6963481.3870400.3877480.159869
2021-08-25-0.7567390.3138420.6732110.799936
2021-08-261.3425600.5281750.6599461.509831
df.head(2)
ABCD
2021-08-21-1.3236881.019511-0.338295-3.620159
2021-08-22-0.8436370.453589-0.991227-0.405978
df.tail()
ABCD
2021-08-22-0.8436370.453589-0.991227-0.405978
2021-08-23-0.554034-2.888354-0.666020-0.337691
2021-08-240.067979-1.051827-0.4151681.585267
2021-08-25-0.673101-0.8370083.3602300.980979
2021-08-26-0.308061-0.4570082.063482-0.477308
df.describe()
ABCD
count6.0000006.0000006.0000006.000000
mean-0.605757-0.6268490.502167-0.379149
std0.4736591.3598441.7747671.801394
min-1.323688-2.888354-0.991227-3.620159
25%-0.801003-0.998123-0.603307-0.459476
50%-0.613567-0.647008-0.376731-0.371835
75%-0.3695540.2259401.4630380.651311
max0.0679791.0195113.3602301.585267
df.index
DatetimeIndex(['2021-08-21', '2021-08-22', '2021-08-23', '2021-08-24',
               '2021-08-25', '2021-08-26'],
              dtype='datetime64[ns]', freq='D')
df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')
df.index.dtype
dtype('<M8[ns]')
df.columns.dtype
dtype('O')
df.index[1] = "20211001"
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-13-a1c35869ebbd> in <module>
----> 1 df.index[1] = "20211001"


~/miniconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in __setitem__(self, key, value)
   3907 
   3908     def __setitem__(self, key, value):
-> 3909         raise TypeError("Index does not support mutable operations")
   3910 
   3911     def __getitem__(self, key):


TypeError: Index does not support mutable operations
df.columns[1]
'B'
df.columns[1] = "F"
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-15-e4a0ff29c1bd> in <module>
----> 1 df.columns[1] = "F"


~/miniconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in __setitem__(self, key, value)
   3907 
   3908     def __setitem__(self, key, value):
-> 3909         raise TypeError("Index does not support mutable operations")
   3910 
   3911     def __getitem__(self, key):


TypeError: Index does not support mutable operations
#我想改动index name,发现上述操作行不通,然后pandas提供了reindex接口
#To reindex means to conform the data to match a given set of labels along a particular axis.
#也就是说reindex相当于在指定轴上select,当没有的index出现则填充Nan
#我们再试一下会不会改动原来的dataframe
df.reindex(["C","A","E"],axis="columns")
CAE
2021-08-21-0.8285100.291046NaN
2021-08-22-0.0093430.169817NaN
2021-08-23-0.5645750.539149NaN
2021-08-240.387748-0.696348NaN
2021-08-250.673211-0.756739NaN
2021-08-260.6599461.342560NaN
df
#此时可以看到原来的dataframe并没有改变
ABCD
2021-08-210.291046-1.182064-0.828510-0.050328
2021-08-220.1698170.372991-0.0093430.667243
2021-08-230.539149-1.772332-0.564575-0.136001
2021-08-24-0.6963481.3870400.3877480.159869
2021-08-25-0.7567390.3138420.6732110.799936
2021-08-261.3425600.5281750.6599461.509831
df.reindex([0,5],axis="index") #此时使用数字索引好像失效了
ABCD
0NaNNaNNaNNaN
5NaNNaNNaNNaN
df.reindex(index=["2021.08.21","2021.08.26"],columns=["A","D"]) #index name 我打不出正确的格式,哈哈哈
AD
2021.08.21NaNNaN
2021.08.26NaNNaN
#骚操作1
#Note that the Index objects containing the actual axis labels can be shared between objects. So if we have a Series and a DataFrame
#rs = s.reindex(df.index)
#This means that the reindexed Series’s index is the same Python object as the DataFrame’s index.
#骚操作2
#reindex_like
df2 = pd.DataFrame(np.random.randn(4,3),index=["a","b","c","d"],columns=["A","B","C"])
df3 = pd.DataFrame(np.random.randn(4,4),index=["a","c","e","f"],columns=["A","C","E","F"])
print(df2)
print(df3)
          A         B         C
a -0.556821  1.481807  0.175237
b -0.440093  1.309766  0.265040
c -0.298950  0.565390  1.164518
d -0.287415 -0.226004  0.875915
          A         C         E         F
a -1.220393 -0.770392 -0.160964  0.344573
c  0.232881 -0.972749  1.882510  0.115421
e  0.265853 -1.628597 -1.128498 -0.073716
f -0.189951 -0.496491 -0.109640 -1.529581
df2.reindex_like(df3) #先取交集,再将模仿的数据框的其他行列拿过来填充NaN
ACEF
a-0.5568210.175237NaNNaN
c-0.2989501.164518NaNNaN
eNaNNaNNaNNaN
fNaNNaNNaNNaN
df3.reindex_like(df2)
ABC
a-1.220393NaN-0.770392
bNaNNaNNaN
c0.232881NaN-0.972749
dNaNNaNNaN
#这里不再说reindex了,下一次深究一下
#我最初的目的是rename index/columns
df3
ACEF
a-1.220393-0.770392-0.1609640.344573
c0.232881-0.9727491.8825100.115421
e0.265853-1.628597-1.128498-0.073716
f-0.189951-0.496491-0.109640-1.529581
df3.rename(str.upper,axis="index") #df3.rename(str.upper,axis=0)
ACEF
A-1.220393-0.770392-0.1609640.344573
C0.232881-0.9727491.8825100.115421
E0.265853-1.628597-1.128498-0.073716
F-0.189951-0.496491-0.109640-1.529581
df3.rename({"a":"A","c":"B","e":"E","f":"F"},axis=0) #需要以字典的形式传递需要改动的标签
#实际的df3并未改动,设置inplace=True将会改动元数据
ACEF
A-1.220393-0.770392-0.1609640.344573
B0.232881-0.9727491.8825100.115421
E0.265853-1.628597-1.128498-0.073716
F-0.189951-0.496491-0.109640-1.529581
df3.rename({"a":"A"},axis=0)
ACEF
A-1.220393-0.770392-0.1609640.344573
c0.232881-0.9727491.8825100.115421
e0.265853-1.628597-1.128498-0.073716
f-0.189951-0.496491-0.109640-1.529581
df3.rename(index={},columns={}) #同样可行
df.columns = [x.lower() for x in df.columns] #其实也可以
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值