Pandas基础(二)

Pandas数据结构Series-基本技巧

数据查看
1
2
3
4
5
6
7
#查看前五的数据
s = pd.Series(np.random.rand(15))
print(s.head()) #默认查看数据前五条
# 查看后5条数据
print(s.tail()) #默认查看数据的后五条
# 查看前10条数据
print(s.head(10))
重新索引

重新索引的作用是根据新的索引重新排序,若新的索引不存在则引入缺失值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# .reindex将会根据索引重新排序,如果当前索引不存在,则引入缺失值
s = pd.Series(np.random.rand(5),index=['a','b','c','d','e'])
print(s)
# 将索引值修改为['c','d','a','f']
s1 = s.reindex(['c','d','a','f'])
print(s1)
>>>
a 0.972218
b 0.820531
c 0.940448
d 0.009572
e 0.462811
dtype: float64
c 0.940448
d 0.009572
a 0.972218
f NaN
dtype: float64

如果不想引入缺失值可以使用fill_value指定不存在的索引值为0或其他值

1
2
3
4
5
6
7
8
9
s2 = s.reindex(['c','d','a','f','aaaaa'], fill_value=0)
print(s2)
>>>
c 0.940448
d 0.009572
a 0.972218
f 0.000000
aaaaa 0.000000
dtype: float64

数据对齐

对齐两列数据,当数据索引不同时存在需要对齐的Series的时,数据值以缺失值填充。

1
2
3
4
5
6
7
8
9
10
11
12
# Series 和 ndarray 之间的主要区别是,Series 上的操作会根据标签自动对齐
# index顺序不会影响数值计算,以标签来计算
# 空值和任何值计算结果扔为空值
s1 = pd.Series(np.random.rand(3),index=['jack','marry','tom'])
s2 = pd.Series(np.random.rand(3),index=['wang','jack','marry'])
print(s1+s2)
>>>
jack 1.261341
marry 0.806095
tom NaN
wang NaN
dtype: float64

删除

使用.drop删除元素的时候,默认返回的是一个副本(inplace=False)

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
s = pd.Series(np.random.rand(5), index = list('ngjur'))
print(s)
s1 = s.drop('n')
s2 = s.drop(['g','j'])
print(s1)
print(s2)
print(s)
>>>
n 0.876587
g 0.594053
j 0.628232
u 0.360634
r 0.454483
dtype: float64
g 0.594053
j 0.628232
u 0.360634
r 0.454483
dtype: float64
n 0.876587
u 0.360634
r 0.454483
dtype: float64
n 0.876587
g 0.594053
j 0.628232
u 0.360634
r 0.454483
dtype: float64

添加

方法一:直接通过下标索引/标签index添加值

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
s1 = pd.Series(np.random.rand(5))
s2 = pd.Series(np.random.rand(5), index = list('ngjur'))
print(s1)
print(s2)
s1[5] = 100
s2['a'] = 100
print(s1)
print(s2)
>>>
0 0.516447
1 0.699382
2 0.469513
3 0.589821
4 0.402188
dtype: float64
n 0.615641
g 0.451192
j 0.022328
u 0.977568
r 0.902041
dtype: float64
0 0.516447
1 0.699382
2 0.469513
3 0.589821
4 0.402188
5 100.000000
dtype: float64
n 0.615641
g 0.451192
j 0.022328
u 0.977568
r 0.902041
a 100.000000
dtype: float64

方法二:使用.append()方法添加,可以直接添加一个数组,且生成一个新的数组,不改变之前的数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
s3 = s1.append(s2)
print(s3)
print(s1)
>>>
0 0.238541
1 0.843671
2 0.452739
3 0.312212
4 0.878904
5 100.000000
n 0.135774
g 0.530755
j 0.886315
u 0.512223
r 0.551555
a 100.000000
dtype: float64
0 0.238541
1 0.843671
2 0.452739
3 0.312212
4 0.878904
5 100.000000
dtype: float64

修改

series可以通过索引直接修改,类似序列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
s = pd.Series(np.random.rand(3), index = ['a','b','c'])
print(s)
s['a'] = 100
s[['b','c']] = 200
print(s)
>>>
a 0.873604
b 0.244707
c 0.888685
dtype: float64
a 100.0
b 200.0
c 200.0
dtype: float64

煌金 wechat
扫描关注公众号,回复「1024」获取为你准备的特别推送~
  • 本文作者: 煌金 | 微信公众号【咸鱼学Python】
  • 本文链接: http://www.xianyucoder.cn/2019/01/19/pandas2/
  • 版权声明: 本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!