pandas

1
2
3
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
1
2
3
4
5
6
7
8
9
10
11
1、Series
Series是一种类似与一维数组的对象,由下面两个部分组成:
 
values:一组数据(ndarray类型)
index:相关的数据索引标签
1)Series的创建
两种创建方式:
 
(1) 由列表或numpy数组创建
 
默认索引为0到N-1的整数型索引

1
2
3
4
5
6
7
8
9
2)Series的索引和切片
可以使用中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时返回的是一个Series类型)。
 
(1) 显式索引:
 
- 使用index中的元素作为索引值
- 使用s.loc[](推荐):注意,loc中括号中放置的一定是显示索引
注意,此时是闭区间- 使用整数作为索引值
- 使用.iloc[](推荐):iloc中的中括号中必须放置隐式索引

(2) 隐式索引:

注意,此时是半开区间

 

 

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
DataFrame
DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。
 
行索引:index
列索引:columns
值:values
1)DataFrame的创建
最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。
 
此外,DataFrame会自动加上每一行的索引。
 
使用字典创建的DataFrame后,则columns参数将不可被使用。
 
同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。
 
使用ndarray创建DataFrame
DataFrame(data=np.random.randint(0,100,size=(5,6)))
0   1   2   3   4   5
0   32  93  0   23  21  40
1   27  35  9   76  41  68
2   63  96  63  30  96  51
3   2   50  28  26  26  41
4   32  74  97  84  56  7
DataFrame属性:values、columns、index、shape
 
df
df.values
array([[77, 67],
       [88, 88],
       [99, 99],
       [90, 78]], dtype=int64)
df.index
Index(['语文', '数学', '英语', '理综'], dtype='object')
使用ndarray创建DataFrame:创建一个表格用于展示张三,李四,王五的java,python的成绩
 
'语文','数学','英语','理综'
dic = {
    '张三':[77,88,99,90],
    '李四':[67,88,99,78]
}
df = DataFrame(data=dic,index=['语文','数学','英语','理综'])
df
张三  李四
语文  77  67
数学  88  88
英语  99  99
理综  90  78
============================================
 
 
    张三  李四 
语文 150  0
数学 150  0
英语 150  0
理综 300  0
============================================
 
2)DataFrame的索引
(1) 对列进行索引
 
- 通过类似字典的方式  df['q']
- 通过属性的方式     df.q
可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。
 
df
张三  李四
语文  77  67
数学  88  88
英语  99  99
理综  90  78
df['张三']
语文    77
数学    88
英语    99
理综    90
Name: 张三, dtype: int64
df.张三
语文    77
数学    88
英语    99
理综    90
Name: 张三, dtype: int64
df[['李四','张三']]
df[['李四','张三']]
李四  张三
语文  67  77
数学  88  88
英语  99  99
理综  78  90
#修改列索引
df.columns = ['zhangsan','lisi']
df
zhangsan    lisi
语文  77  67
数学  88  88
英语  99  99
理综  90  78
(2) 对行进行索引
 
- 使用.loc[]加index来进行行索引
- 使用.iloc[]加整数来进行行索引
同样返回一个Series,index为原来的columns。
 
df.iloc[[0,1]]
zhangsan    lisi
语文  77  67
数学  88  88
(3) 对元素索引的方法
 
- 使用列索引
- 使用行索引(iloc[3,1] or loc['C','q']) 行索引在前,列索引在后
df.iloc[0,1]
67
切片:
【注意】 直接用中括号时:
 
索引表示的是列索引
切片表示的是行切片
df[0:2]
zhangsan    lisi
语文  77  67
数学  88  88
在loc和iloc中使用切片(切列) : df.loc['B':'C','丙':'丁']
 
df.iloc[:,0:1]
zhangsan
语文  77
数学  88
英语  99
理综  90
 
3)DataFrame的运算
(1) DataFrame之间的运算
 
同Series一样:
 
在运算中自动对齐不同索引的数据
如果索引不对应,则补NaN
创建DataFrame df1 不同人员的各科目成绩,月考一
 
创建DataFrame df2 不同人员的各科目成绩,月考二
 
 
df
zhangsan    lisi
语文  87  177
数学  10  198
英语  109 209
理综  100 188
df.loc['数学','zhangsan'] = 0
df['lisi'] += 100
df += 10
df += 10
(df+df)/2
zhangsan    lisi
语文  77  67
数学  88  88
英语  99  99
理综  90  78

  

posted @   魏三斗  阅读(216)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示