Pandas-数据结构&基本操作

数据结构

Series

Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。

Series的创建与应用

指定内容,默认索引

a=pd.Series(np.arange(10))
print(a)

输出:

 

 

 指定内容,指定索引

b=pd.Series([1.2,2.2,3.2,4.2],index=[1,2,3,4])
print(b)
# 1    1.2
# 2    2.2
# 3    3.2
# 4    4.2
# dtype: float64

字典创建数据

c=pd.Series({"red":10,"green":20,"blue":30})
print(c)
print(c.index)
print(c.values)
print(c[1])
# red      10
# green    20
# blue     30
# dtype: int64
# Index(['red', 'green', 'blue'], dtype='object')
# [10 20 30]
# 20

DataFrame

DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引

  • 行索引,表明不同行,横向索引,叫index,0轴,axis=0
  • 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

DataFrame的创建与应用

a=pd.DataFrame(np.random.randn(2,3))
print(a)
#          0         1         2
# 0 -1.628378 -1.574723  0.414543
# 1 -1.753412  2.216918  0.120283
score=np.random.randint(40,100,(10,5))
print(score)
# [[96 68 72 66 44]
#  [70 56 76 51 65]
#  [86 41 94 77 92]
#  [94 99 80 91 67]
#  [90 88 46 65 73]
#  [79 52 70 50 77]
#  [46 71 47 97 78]
#  [53 57 84 59 88]
#  [44 79 78 78 92]
#  [62 65 86 90 78]]

增加行列索引

# # 构造行索引序列
subjects = ["语文", "数学", "英语", "政治", "体育"]
stu=["同学"+str(i) for i in range(score.shape[0])]
data=pd.DataFrame(score,columns=subjects,index=stu)
print(data)
#     语文  数学  英语  政治  体育
# 同学0  96  68  72  66  44
# 同学1  70  56  76  51  65
# 同学2  86  41  94  77  92
# 同学3  94  99  80  91  67
# 同学4  90  88  46  65  73
# 同学5  79  52  70  50  77
# 同学6  46  71  47  97  78
# 同学7  53  57  84  59  88
# 同学8  44  79  78  78  92
# 同学9  62  65  86  90  78

其他操作

#显示前5行数据
print(data.head(5))
#显示后5行数据
print(data.tail(5))
#显示行索引
print(data.index)
# #显示列索引
print(data.columns)
# #显示具体的value值
print(data.values)
# #显示数据的转置T
print(data.T)
# #重设索引,保留之前的索引为index
print(data.reset_index())
# #重设索引,删除之前的索引
print(data.reset_index(drop=True))
# #修改行索引值
stu=["同学_"+str(i) for i in range(score.shape[0])]
data.index=stu
print(data)
# #设置某列值为新的索引
df = pd.DataFrame({'month': [1, 4, 7, 10],
                    'year': [2012, 2014, 2013, 2014],
                    'sale':[55, 40, 84, 31]})
print(df)
print(df.set_index("year"))
print(df.set_index(["year","month"]))

输出:

Index(['同学0', '同学1', '同学2', '同学3', '同学4', '同学5', '同学6', '同学7', '同学8', '同学9'], dtype='object')
Index(['语文', '数学', '英语', '政治', '体育'], dtype='object')
[[96 68 72 66 44]
 [70 56 76 51 65]
 [86 41 94 77 92]
 [94 99 80 91 67]
 [90 88 46 65 73]
 [79 52 70 50 77]
 [46 71 47 97 78]
 [53 57 84 59 88]
 [44 79 78 78 92]
 [62 65 86 90 78]]
    同学0  同学1  同学2  同学3  同学4  同学5  同学6  同学7  同学8  同学9
语文   96   70   86   94   90   79   46   53   44   62
数学   68   56   41   99   88   52   71   57   79   65
英语   72   76   94   80   46   70   47   84   78   86
政治   66   51   77   91   65   50   97   59   78   90
体育   44   65   92   67   73   77   78   88   92   78
  index  语文  数学  英语  政治  体育
0   同学0  96  68  72  66  44
1   同学1  70  56  76  51  65
2   同学2  86  41  94  77  92
3   同学3  94  99  80  91  67
4   同学4  90  88  46  65  73
5   同学5  79  52  70  50  77
6   同学6  46  71  47  97  78
7   同学7  53  57  84  59  88
8   同学8  44  79  78  78  92
9   同学9  62  65  86  90  78
   语文  数学  英语  政治  体育
0  96  68  72  66  44
1  70  56  76  51  65
2  86  41  94  77  92
3  94  99  80  91  67
4  90  88  46  65  73
5  79  52  70  50  77
6  46  71  47  97  78
7  53  57  84  59  88
8  44  79  78  78  92
9  62  65  86  90  78
      语文  数学  英语  政治  体育
同学_0  96  68  72  66  44
同学_1  70  56  76  51  65
同学_2  86  41  94  77  92
同学_3  94  99  80  91  67
同学_4  90  88  46  65  73
同学_5  79  52  70  50  77
同学_6  46  71  47  97  78
同学_7  53  57  84  59  88
同学_8  44  79  78  78  92
同学_9  62  65  86  90  78
   month  year  sale
0      1  2012    55
1      4  2014    40
2      7  2013    84
3     10  2014    31
      month  sale
year             
2012      1    55
2014      4    40
2013      7    84
2014     10    31
            sale
year month      
2012 1        55
2014 4        40
2013 7        84
2014 10       31

 

posted @ 2021-02-01 22:33  清风紫雪  阅读(135)  评论(0编辑  收藏  举报