import numpy as np
import pandas as pd
from pandas import series, dataframe
np.random.seed(666)
# series reindex
s1 = series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
print(s1)
'''a 1
b 2
c 3
d 4
dtype: int64
'''# 重新指定 index, 多出來的index,可以使用fill_value 填充
print(s1.reindex(index=['a', 'b', 'c', 'd', 'e'], fill_value = 10))
'''a 1
b 2
c 3
d 4
e 10
dtype: int64
'''s2 = series(['a', 'b', 'c'], index = [1, 5, 10])
print(s2)
'''1 a
5 b
10 c
dtype: object
'''# 修改索引,
# 將s2的索引增加到15個
# 如果新增加的索引值不存在,預設為 nan
print(s2.reindex(index=range(15)))
'''0 nan
1 a
2 nan
3 nan
4 nan
5 b
6 nan
7 nan
8 nan
9 nan
10 c
11 nan
12 nan
13 nan
14 nan
dtype: object
'''# ffill : foreaward fill 向前填充,
# 如果新增加索引的值不存在,那麼按照前乙個非nan的值填充進去
print(s2.reindex(index=range(15), method='ffill'))
'''0 nan
1 a
2 a
3 a
4 a
5 b
6 b
7 b
8 b
9 b
10 c
11 c
12 c
13 c
14 c
dtype: object
'''# reindex dataframe
df1 = dataframe(np.random.rand(25).reshape([5, 5]), index=['a', 'b', 'd', 'e', 'f'], columns=['c1', 'c2', 'c3', 'c4', 'c5'])
print(df1)
''' c1 c2 c3 c4 c5
a 0.700437 0.844187 0.676514 0.727858 0.951458
b 0.012703 0.413588 0.048813 0.099929 0.508066
d 0.200248 0.744154 0.192892 0.700845 0.293228
e 0.774479 0.005109 0.112858 0.110954 0.247668
f 0.023236 0.727321 0.340035 0.197503 0.909180
'''# 為 dataframe 新增乙個新的索引
# 可以看到 自動 擴充為 nan
print(df1.reindex(index=['a', 'b', 'c', 'd', 'e', 'f']))
''' 自動填充為 nan
c1 c2 c3 c4 c5
a 0.700437 0.844187 0.676514 0.727858 0.951458
b 0.012703 0.413588 0.048813 0.099929 0.508066
c nan nan nan nan nan
d 0.200248 0.744154 0.192892 0.700845 0.293228
e 0.774479 0.005109 0.112858 0.110954 0.247668
f 0.023236 0.727321 0.340035 0.197503 0.909180
'''# 擴充列, 也是一樣的
print(df1.reindex(columns=['c1', 'c2', 'c3', 'c4', 'c5', 'c6']))
''' c1 c2 c3 c4 c5 c6
a 0.700437 0.844187 0.676514 0.727858 0.951458 nan
b 0.012703 0.413588 0.048813 0.099929 0.508066 nan
d 0.200248 0.744154 0.192892 0.700845 0.293228 nan
e 0.774479 0.005109 0.112858 0.110954 0.247668 nan
f 0.023236 0.727321 0.340035 0.197503 0.909180 nan
'''# 減小 index
print(s1.reindex(['a', 'b']))
''' 相當於乙個切割效果
a 1
b 2
dtype: int64
'''print(df1.reindex(index=['a', 'b']))
''' 同樣是乙個切片的效果
c1 c2 c3 c4 c5
a 0.601977 0.619927 0.251234 0.305101 0.491200
b 0.244261 0.734863 0.569936 0.889996 0.017936
'''# 對於乙個 serie 來說,可以使用 drop,來丟掉某些 index
print(s1.drop('a'))
''' 就只剩下 三個了
b 2
c 3
d 4
dtype: int64
'''# dataframe drop(a) 直接去掉一行
print(df1.drop('a', axis=0))
''' axis 預設 是 行
c1 c2 c3 c4 c5
b 0.571883 0.254364 0.530883 0.295224 0.352663
d 0.858452 0.379495 0.593284 0.786078 0.949718
e 0.556276 0.643187 0.808664 0.289422 0.501041
f 0.737993 0.286072 0.332714 0.873371 0.421615
'''print(df1.drop('c1', axis=1))
''' 將 c1 的列 去掉
c2 c3 c4 c5
a 0.326681 0.247832 0.601982 0.145905
b 0.373961 0.393819 0.439284 0.926706
d 0.558490 0.617851 0.461280 0.373102
e 0.030434 0.566498 0.383103 0.739243
f 0.982220 0.989826 0.957863 0.411514
'''
Numpy中的函式
生成用函式 效果np.array x 將輸入資料轉化為乙個ndarray np.array x,dtype 將輸入資料轉化為乙個型別為type的ndarray np.asarray array 將輸入資料轉化為乙個新的 copy ndarray np.ones n 生成乙個n長度的一維全一ndarr...
Numpy中的transpose函式
transpose 的操作物件是矩陣。我們用乙個例子來說明這個函式 0 1 2 3 4 5 6 7 這是乙個shape為 2,2,2 的矩陣,現在對它進行transpose操作。首先我們對矩陣的維度進行編號,上述矩陣有三個維度,則編號分別為0,1,2,而transpose函式的引數輸入就是基於這個編...
numpy中的tile函式
在看機器學習實戰這本書時,遇到numpy.tile a,b 函式,愣是沒看懂怎麼回事,裝了numpy模組後,實驗了幾把,原來是這樣子 重複a,b次,這裡的b可以時int型別也可以是遠組型別。python view plain copy import numpy numpy.tile 0,0 5 在列...