NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
NumPy的主要功能:
ndarray,一个多维数组结构,高效且节省空间
无需循环对整组数据进行运算
*读写磁盘数据的工具以及用于操作内存映射文件的工具
*线性代数、随机数生成和傅里叶变换功能
*用于集成C、C++等代码的工具
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
import numpy as np
np1=np.array([1,2,3,4])
np.max(np1) np.argmax(np1)
dtype: bool_, int(8,16,32,64), float(16,32,64)
类型转换:astype()
创建ndarray:
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
reshape()
数组和标量之间的运算
a+1 a*3 1//a a**0.5
同样大小数组之间的运算 a+b a/b a**b
数组的索引 a[5] a2[2][3] a2[2,3]
数组的切片 a[5:8] a[:3] a2[1:2, :4] a2[:,:1] a2[:,1]
问题:给一个数组,选出数组中所有大于5的数。
答案:a[a>5] 原理: a>5会对a中的每一个元素进行判断,返回一个布尔数组
布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组
问题2:给一个数组,选出数组中所有大于5的偶数。
问题3:给一个数组,选出数组中所有大于5的数和偶数。
答案: a[(a>5) & (a%2==0)] a[(a>5) | (a%2==0)]
问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案:a[[1,3,4,6,7]]
问题2:对一个二维数组,选出其第一列和第三列答案:a[:,[1,3]]
通用函数:能同时对数组中所有元素进行运算的函数
常见通用函数: 一元函数:abs, sqrt, exp, log, ceil, floor, rint, trunc, modf, isnan, isinf, cos, sin, tan
二元函数:add, substract, multiply, divide, power, mod, maximum, mininum,
常用函数:
sum 求和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引
Sort 求和
np.random常用函数
rand 给定形状产生随机数组(0到1之间的数)
randint 给定形状产生随机整数
choice 给定形状产生随机选择 s
huffle 与random.shuffle相同
uniform 给定形状产生随机数组
Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。
Series比较像列表(数组)和字典的结合体
创建方式:pd.Series([4,7,-5,3]) pd.Series([4,7,-5,3],index=['a','b','c','d']) pd.Series({'a':1, 'b':2}) pd.Series(0, index=['a','b','c','d'])
获取值数组和索引数组:values属性和index属性
Series支持NumPy模块的特性(下标):
从ndarray创建Series:
Series(arr) 与标量运算
:sr*2 两个Series运算:sr1+sr2 索引:sr[0], sr[[1,2,4]] 切片:sr[0:2]
通用函数:np.abs(sr) 布尔值过滤:sr[sr>0] Series支持字典的特性(标签): 从字典创建Series:Series(dic), in运算:’a’ in sr 键索引:sr['a'], sr[['a', 'b', 'd']]
通过标签获取: df['A'] df[['A', 'B']] df['A'][0] df[0:10][['A', 'C']] df.loc[:,['A','B']] df.loc[:,'A':'C'] df.loc[0,'A'] df.loc[0:10,['A','C']]
实例:
#!/usr/bin/env python
# coding: utf-8
# In[ ]:
# In[7]:
import numpy as np
np.array([1,2,3])
# In[8]:
np1=np.array([1,2,3,4])
# In[9]:
np.max(np1)
# In[10]:
np.argmax(np1)
# In[12]:
np.random.randint(0,4,size=5)
# In[13]:
np1[2
]
# In[ ]:
# In[16]:
np2=np.array([1,2,3,np.nan])
# In[17]:
np.isnan(np2)
# In[ ]:
# In[19]:
import pandas as pd
# In[21]:
sr1=pd.Series([1,2,3,np.nan])
# In[22]:
sr1
# In[ ]:
# In[ ]:
# In[26]:
np2.T
# In[28]:
np3=np.array([[1,2,3],[2,33,5]])
# In[29]:
np3
# In[30]:
np3.T
# In[31]:
np2.dtype
# In[32]:
np2.size
# In[33]:
np3.size
# In[34]:
np2.shape
# In[35]:
np3.shape
# In[36]:
np3.ndim
# In[38]:
np4=np.arange(10)
# In[39]:
np4
# In[42]:
np4=np.arange(0,100,3)
# In[43]:
np4
# In[44]:
np5=np.linspace(0,100,3)
# In[45]:
np5
# In[49]:
np6=np.zeros(3,dtype=float)
# In[50]:
np6
# In[51]:
np6=np.zeros(3,dtype=int)
np6
# In[52]:
get_ipython().set_next_input('np7=np.reshape');get_ipython().run_line_magic('pinfo', 'np.reshape')
# In[63]:
np7=np3.reshape((2,3))
# In[64]:
np7
# In[65]:
np7[:][1:2]
# In[66]:
np7[1:2][:]
# In[67]:
np7[1:2]
# In[68]:
np7[:]
# In[72]:
np7[1:2][:1]
# In[120]:
np7[1:2,0:1]
# In[ ]:
# In[ ]:
# In[74]:
np7[:,1:2]
# In[75]:
np7[,1:2]
# In[76]:
np7[0:1,1:2]
# In[77]:
np7[np7>4]
# In[78]:
np7[(np7>4)&(np7%2==0)]
# In[83]:
np.abs(np7)
# In[85]:
np.sqrt(np7)
# In[95]:
np4[[1,2]]
# In[103]:
import random
# In[106]:
np.random.rand(2,3)
# In[107]:
np.random.randint(2,3,size=10)
# In[111]:
np.random.choice(5,5)
# In[113]:
np9=[1,3,4,5,43,2]
# In[ ]:
# In[115]:
np.random.shuffle(np9)
# In[116]:
np9
# In[117]:
np.random.uniform(0,10,100)
# In[ ]:
# In[ ]:
# In[ ]:
# In[121]:
import pandas as pd
# In[139]:
ps1=pd.Series([1,3,4],index=['a','b','c'])
# In[140]:
ps1
# In[141]:
ps1['b']
# In[142]:
ps2=pd.Series([3,4,5],index=['a','b','d'])
# In[143]:
ps1+ps2
# In[145]:
ps3=ps1+ps2
# In[147]:
ps3.dropna()
# In[148]:
ps3.fillna(1)
# In[149]:
ps3.isnull()
# In[150]:
ps4=pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
# In[151]:
ps4
# In[155]:
df=pd.DataFrame
# In[ ]:
# In[164]:
rhnba=pd.read_html('https://baike.baidu.com/item/NBA%E6%80%BB%E5%86%A0%E5%86%9B/2173192?fr=aladdin')[0]
# In[165]:
rhnba
# In[167]:
ra=rhnba
# In[168]:
ra
# In[175]:
ra[0][9]
# In[178]:
ra[0].index
# In[179]:
ra[0].T
# In[182]:
ra.columns.T
# In[184]:
ra.values
# In[186]:
ra.index.T
# In[187]:
ra.describe()
# In[189]:
ra.loc[20]
# In[190]:
ra.iloc[20]
# In[201]:
ra.tail(10)
# In[204]:
ra.groupby(2)
# In[208]:
ra.drop(0
)
# In[212]:
ra.columns=ra.loc[0]
# In[214]:
ra1=ra.drop(0)
# In[215]:
ra1
# In[216]:
ra.groupby('冠军').groups
# In[235]:
ra.groupby('FMVP').size().sort_values(ascending=False).drop('未设立')
# In[ ]:
ra.groupby('FMVP').size().sort_values
# In[237]:
ra.groupby('冠军').size().sort_values(ascending=False)
# In[ ]:
# In[241]:
ra.to_csv
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]:
# In[ ]: