zoukankan      html  css  js  c++  java
  • numpy和pandas简单使用

    numpy和pandas简单使用

    import numpy as np
    import pandas as pd
    

    一维数据分析

    numpy中使用array, pandas中使用series

    numpy一维数组array

    1.基本使用

    a= np.array([2,3,4,5])
    
    a
    
    array([2, 3, 4, 5])
    
    a[0]
    
    2
    
    a[1:3]
    
    array([3, 4])
    
    a.dtype
    
    
    dtype('int64')
    
    

    2.向量化计算

    a=np.array([1,2,3])
    
    
    b=np.array([4,5,6])
    
    
    a + b
    
    
    array([5, 7, 9])
    
    
    a * b
    
    
    array([ 4, 10, 18])
    
    

    3.统计功能

    np.mean(a)
    
    
    2.0
    
    
    np.std(a)
    
    
    0.816496580927726
    
    

    pandas一维数据结构series

    1.基本使用

    stocks=pd.Series([54.74,190.0,173.14,1050.3,181.86,1139.49],index=['腾讯','阿里巴巴','苹果', '谷歌', 'Facebook', '亚马逊'])
    
    
    • 描述统计信息
    stocks.describe()
    
    
    count       6.000000
    mean      464.921667
    std       491.284358
    min        54.740000
    25%       175.320000
    50%       185.930000
    75%       835.225000
    max      1139.490000
    dtype: float64
    
    
    • 按照位置取值
    stocks.iloc[0]
    
    
    54.74
    
    
    • 按照索引取值
    stocks.loc['腾讯']
    
    
    54.74
    
    

    2.向量化计算

    s1 = pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd'])
    s2 = pd.Series([10,20,30,40], index=['a', 'b', 'e', 'f'])
    s3 = s1 + s2
    s3
    
    
    a    11.0
    b    22.0
    c     NaN
    d     NaN
    e     NaN
    f     NaN
    dtype: float64
    
    
    • 相同index名称相加,index不同默认结果为NaN
    • 下面两种去除NaN的方法
    s3.dropna()
    
    
    a    11.0
    b    22.0
    dtype: float64
    
    
    s3 = s1.add(s2, fill_value=0)
    s3
    
    
    a    11.0
    b    22.0
    c     3.0
    d     4.0
    e    30.0
    f    40.0
    dtype: float64
    
    

    二维数据分析

    numpy二维数组array

    1.基本使用

    a = np.array([[1,2,3, 4],
                  [5,6,7,8],
                  [9,10,11,12]])
    a
    
    
    array([[ 1,  2,  3,  4],
           [ 5,  6,  7,  8],
           [ 9, 10, 11, 12]])
    
    
    a[0,2]
    
    
    3
    
    
    • 取第一行
    a[0,:]
    
    
    array([1, 2, 3, 4])
    
    
    • 取第一列
    a[:, 0]
    
    
    array([1, 5, 9])
    
    
    • 按行计算均值 axis=1 按行 axis=0 按列
    a.mean(axis=1)
    
    
    array([ 2.5,  6.5, 10.5])
    
    

    pandas二维数据结构DataFrame

    1.基本使用

    • 向DataFrame中传入一个字典
    salesDict = {
        '购药时间': ['2018-01-01 星期五', '2018-01-02 星期六', '2018-01-06 星期三'],
        '社保卡号': ['001616528', '001616528', '0012602828'],
        '商品编码': [236701, 236701, 236701],
        '商品名称': ['强力VC银翘片', '清热解毒口服液', '感康'],
        '销售数量': [6,1,2],
        '应收金额': [82.8,28,16.8],
        '实收金额': [69, 24.64, 15]
    }
    
    
    saleDf=pd.DataFrame(salesDict)
    saleDf
    
    
    购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
    0 2018-01-01 星期五 001616528 236701 强力VC银翘片 6 82.8 69.00
    1 2018-01-02 星期六 001616528 236701 清热解毒口服液 1 28.0 24.64
    2 2018-01-06 星期三 0012602828 236701 感康 2 16.8 15.00
    • 使用OrderedDict保证数据有序
    from collections import OrderedDict
    
    
    salesOrderDict = OrderedDict(salesDict)
    salesDf = pd.DataFrame(salesOrderDict)
    salesDf
    
    
    购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
    0 2018-01-01 星期五 001616528 236701 强力VC银翘片 6 82.8 69.00
    1 2018-01-02 星期六 001616528 236701 清热解毒口服液 1 28.0 24.64
    2 2018-01-06 星期三 0012602828 236701 感康 2 16.8 15.00
    • 统计功能
    salesDf.mean()
    
    
    商品编码    236701.000000
    销售数量         3.000000
    应收金额        42.533333
    实收金额        36.213333
    dtype: float64
    
    
    • 按照位置读取数据
    salesDf.iloc[0,1]
    
    
    '001616528'
    
    
    • 读取第一行数据
    salesDf.iloc[0,:]
    
    
    购药时间    2018-01-01 星期五
    社保卡号         001616528
    商品编码            236701
    商品名称           强力VC银翘片
    销售数量                 6
    应收金额              82.8
    实收金额                69
    Name: 0, dtype: object
    
    
    • 读取第一列数据
    salesDf.iloc[:,0]
    
    
    0    2018-01-01 星期五
    1    2018-01-02 星期六
    2    2018-01-06 星期三
    Name: 购药时间, dtype: object
    
    
    • 按照列名称读取数据
    • 读取某一列或某几列数据
    salesDf.loc[:,'商品名称']
    
    
    0    强力VC银翘片
    1    清热解毒口服液
    2         感康
    Name: 商品名称, dtype: object
    
    
    salesDf.loc[:, ['商品名称', '销售数量']]
    
    
    商品名称 销售数量
    0 强力VC银翘片 6
    1 清热解毒口服液 1
    2 感康 2
    • 读取列数据的简单写法
    salesDf['商品名称']
    
    
    0    强力VC银翘片
    1    清热解毒口服液
    2         感康
    Name: 商品名称, dtype: object
    
    

    2.筛选查询

    • 构建查询条件
    querySet = salesDf.loc[:, '销售数量'] > 1
    type(querySet)
    
    
    pandas.core.series.Series
    
    
    querySet
    
    
    0     True
    1    False
    2     True
    Name: 销售数量, dtype: bool
    
    
    • 应用查询条件
    salesDf.loc[querySet,:]
    
    
    购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
    0 2018-01-01 星期五 001616528 236701 强力VC银翘片 6 82.8 69.0
    2 2018-01-06 星期三 0012602828 236701 感康 2 16.8 15.0

    3.pandas读取execl

    这里依赖于xlrd

    fileNameStr = './手机销售情况.xlsx'
    xls = pd.ExcelFile(fileNameStr)
    
    
    salesDf = xls.parse('Sheet1')
    
    
    • 读取前5行
    salesDf.head()
    
    
    商品名称 单价 销量
    0 IphoneXsMax 9900 100000
    1 IphoneXR 5000 500000
    2 小米9 2999 2000000
    3 IpadMini5 2999 100000000
    • 查看数据类型
    salesDf.loc[:, '单价'].dtype
    
    
    dtype('int64')
    
    
    salesDf.dtypes
    
    
    商品名称    object
    单价       int64
    销量       int64
    dtype: object
    
    
    • 查看数据行数列数
    salesDf.shape
    
    
    (4, 3)
    
    
    • 每一列的描述统计信息
    salesDf.describe()
    
    
    单价 销量
    count 4.000000 4.000000e+00
    mean 5224.500000 2.565000e+07
    std 3256.603599 4.957341e+07
    min 2999.000000 1.000000e+05
    25% 2999.000000 4.000000e+05
    50% 3999.500000 1.250000e+06
    75% 6225.000000 2.650000e+07
    max 9900.000000 1.000000e+08
  • 相关阅读:
    could not read data from '/Users/lelight/Desktop/ViewControllerLife/ViewControllerLife/Info.plist': The file “Info.plist” couldn’t be opened because there is no such file.
    NSNotification 消息通知的3种方式
    按钮点击播放音效
    字符串变枚举变量
    Flutter的使用教学笔记
    UI控件的位置
    博客园大佬主页跳转
    retain, copy, assign区别
    OC自定义文档头部注释
    OC语言自定义打印
  • 原文地址:https://www.cnblogs.com/Peter2014/p/10611010.html
Copyright © 2011-2022 走看看