zoukankan      html  css  js  c++  java
  • numpy,pandas

    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[ ]:




  • 相关阅读:
    linux下通过命令行重启服务,查看id,更改tv密码
    windows渗透相关、hideadmin工具隐藏用户账号、添加隐藏用户
    windows服务隐藏 以及进程隐藏
    nat32 winh命令远程执行难点
    anydesk命令行使用
    html页面,能用鼠标滚轮滑动,但是不能触屏滑动
    Java 全局统一异常捕获
    git 常用操作
    vue v-for强制刷新
    flutter-TextField垂直居中
  • 原文地址:https://www.cnblogs.com/wrqysrt/p/10896182.html
Copyright © 2011-2022 走看看