numpy笔记
基本命令
ndim
:维度
shape
: 行数和列数
size
: 元素个数
array
:创建数组
dtype
:指定数据类型
empty
:创建数据接近0
linspace
:创建线段
np.max
和 np.min
时可以加个参数axis,0表示找出每列的最值,1表示找出每行的最值。
索引
1 2 3 4 5 6 7 8 9
| import numpy as np A = np.arange(2,14).reshape((3,4))
# array([[ 2, 3, 4, 5] # [ 6, 7, 8, 9] # [10,11,12,13]]) print(np.argmin(A)) # 0 print(np.argmax(A)) # 11
|
元素打印
给定一个矩阵A[3,4],print(A[1])等价于打印第二行,所以numpy里面逐行打印的代码为
1 2 3 4 5 6 7
| for row in A: print(row) """ [ 3, 4, 5, 6] [ 7, 8, 9, 10] [11, 12, 13, 14] """
|
将矩阵内元素依次打印,flatten
函数将多维的矩阵展开成1行的数列,flat
为一个迭代器,本身具有object
属性。
1 2 3 4 5 6 7 8 9 10 11 12 13
| import numpy as np A = np.arange(3,15).reshape((3,4)) print(A.flatten()) # array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
for item in A.flat: print(item) # 3 # 4 …… # 14
|
矩阵的合并
np.vstack() —-上下合并
np.hstack()—-左右合并
np.newaxis()—-将数组转化为矩阵形式
np.concatenate()—-合并操作多个矩阵,其中也可以选择参数axis,0或1
矩阵的分割
np.split()—-等量分割
np.array_split()—-不等量分割
np.vsplit() np.hsplit()
1 2 3 4 5 6 7 8 9 10 11 12 13
| print(np.vsplit(A, 3)) #等于 print(np.split(A, 3, axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
print(np.hsplit(A, 2)) #等于 print(np.split(A, 2, axis=1)) """ [array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])] """
|
矩阵copy
两个复制的区别”=” 和 “copy()”
= 复制之后有关联
copy() 复制之后没有关联
pandas笔记
两个主要数据结构 Series和DataFrame
Series
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import pandas as pd import numpy as np s = pd.Series([1,3,6,np.nan,44,1])
print(s) """ 0 1.0 1 3.0 2 6.0 3 NaN 4 44.0 5 1.0 dtype: float64 """
|
DataFrame
1 2 3 4 5 6 7 8 9 10 11 12 13
| dates = pd.date_range('20160101',periods=6) df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
print(df) """ a b c d 2016-01-01 -0.253065 -2.071051 -0.640515 0.613663 2016-01-02 -1.147178 1.532470 0.989255 -0.499761 2016-01-03 1.221656 -2.390171 1.862914 0.778070 2016-01-04 1.473877 -0.046419 0.610046 0.204672 2016-01-05 -1.584752 -0.700592 1.487264 -1.778293 2016-01-06 0.633675 -1.414157 -0.277066 -0.442545 """
|
pandas选择数据
根据标签 loc
,根据序列 iloc
,混合两种ix
pandas处理丢失数据
pd.dropna()
1 2 3 4 5 6 7 8 9 10 11
| df.dropna( axis=0, # 0: 对行进行操作; 1: 对列进行操作 how='any' # 'any': 只要存在 NaN 就 drop 掉; 'all': 必须全部是 NaN 才 drop ) """ A B C D 2013-01-03 8 9.0 10.0 11 2013-01-04 12 13.0 14.0 15 2013-01-05 16 17.0 18.0 19 2013-01-06 20 21.0 22.0 23 """
|
pd.fillna()
如果是将 NaN
的值用其他值代替, 比如代替成 0
:
pd.isnull()
判断是否有缺失数据 NaN
, 为 True
表示缺失数据:
1 2 3 4 5 6 7 8 9 10
| df.isnull() """ A B C D 2013-01-01 False True False False 2013-01-02 False False True False 2013-01-03 False False False False 2013-01-04 False False False False 2013-01-05 False False False False 2013-01-06 False False False False """
|
检测在数据中是否存在 NaN
, 如果存在就返回 True
:
1 2
| np.any(df.isnull()) == True # True
|
pandas导入导出数据
读取csv
1 2 3 4 5 6 7
| import pandas as pd #加载模块
#读取csv data = pd.read_csv('student.csv')
#打印出data print(data)
|
将资料存取成pickle
1
| data.to_pickle('student.pickle')
|
pandas合并concat
axis合并方向
注意跟前面numpy不相同
评论加载中