62库

您现在的位置是:首页 > 前端开发 > JavaScript > 正文

JavaScript

pandas的基本功能(一)

Admin2023-11-11JavaScript77

第16天pandas的基本功能(一)

灵活的二进制操作

  • 体现在2个方面

    • 支持一维和二维之间的广播

    • 支持缺失值数据处理

  • 四则运算支持广播

    • +add - sub *mul /div

    • divmod()分区和模运算(返回商和余数2个结果)

      • 案例:a,b=divmod(一维矩阵)

    • 空值处理

      • 矩阵中空值用NaN代替

      • NaN+值=NaN

      • np(numpy).nan表示空值

      • 填充空值: fillna(value=值)

      • np.nan == np.nan 结果为False

        • 如果a矩阵和b矩阵中有空值 那么 a == b 结果:False

        • 相同:a.equal(b )结果为:True.带空的矩阵比较推荐使用equal

    • 组合

      • 从df2中把df1的数据不全

        • df1.combine_first(df2)

      • 连接

        • 连接二维矩阵

          • df1.concat(df2,axis=0/1)

        • 连接一维矩阵

          • pd.concat([df1,df2])

        • 一维二维通用

          • df1.append(df2)

    • 统计

      • 所有统计函数都支持行或列~~~

        • sum(0/1) mean(0/1)

      • 统计函数

        功能描述
        count非NA观测数量
        sum价值总和
        mean价值的平均值
        mad平均绝对偏差
        median算术值的中值
        min最低限度
        max最大值
        mode模式
        abs绝对值
        prod价值的产物
        std贝塞尔校正的样本标准偏差
        var无偏差
        sem平均值的标准误差
        skew样本偏斜(第3时刻)
        kurt样本峰度(第4个时刻)
        quantile样本分位数(值为%)
        cumsum累计金额
        cumprod累积产品
        cummax累积最大值
        cummin累积最小值
    • 统计函数,统计的时候自动跳过空值

    • len(数组)获取行数,包括Nan所在的行~~~count(不包括)

    • include

      • #可以指定摘要统计的东西
        矩阵.describe(include=['object'])
        矩阵.describe(include=['number'])

    • 最大最小索引

      • 最大数和最小数对应的索引位置

        • 最大 矩阵.idxmax(axis=0/1)

        • 最小 矩阵 .idxmin(axis=0/1)

    • 最常出现值模式

      • a.value_counts() 统计一维数组中每个元素出现的次数

      • a.mode()统计数组中出现次数最多的值

    • 分段/面元

      • cut和qcut

        • 共同点

          • 都可以分为好多份 pd.cut/qcut(df,4) qcut 是对等的 cut 是随机的

        • 不同点

          • pd.cut(df,[数组]) qcut不支持

        • 语法 pd.cut(df,[切点列表],right=True/False)

          • 示列

          #分2组 大于18的为成年,小于18的为未成年,统计个数
          a = pd.Series([4,5,5,2,3,1,8,9,3,15,6,45,56,1,56,2,20,4,5,2,1,8,18,1,82,20,25,20,20,12,13,14])
          b = pd.cut(a,[0,18,100],labels=['未成年','成年'],right=False)
          b.value_counts()

    • 为矩阵添加处理函数/支持多个函数

      • 链式写法

        • (df.pipe(函数名,参数).pipe(函数名,参数).......)

      • apply

        • df.apply(函数名,axis=0/1) 为当前行或列添加处理函数

          • 示列

          #12.判断年龄是否成年: 18岁以上成年   #成年和未成年获救比例
          """
          1.判断是否成年
          2.
          """
          def age_old(b):
             
             c = b['Age']
             if c > 18:
                 return '成年'
             elif c < 18:
                 return '未成年'
             else:
                 return '空值'
          #创建新列
          df['chegnnian'] = df.apply(age_old,axis=1)
          #设置全家的汉子显示
          plt.rcParams['font.size'] = 15

          h_j = df.groupby(by=['Survived','chegnnian']).size()
          plt.pie(h_j,labels=['成年未获救','未成年未获救','空值未获救','成年获救','未成年获救','空值获救'],shadow=True,autopct='%1.1f%%')
          plt.axis('equal') #设置圆的形状 正圆
          plt.show()

      • map

        • df.applymap == df.map()

          • 示列

            #10. 以下肉类数据源,food都转换为小写,添加一个动物列,而且字符串都是小写
            data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon','Pastrami', 'corned beef', 'Bacon','pastrami', 'honey ham', 'nova lox'],
            'price': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})
            data['food'].str.lower()

            #新列: 动物列
            animal = { 'bacon': 'Pig', 'pulled pork': 'pIg', 'pastrami': 'cOw', 'corned beef': 'Co', 'honey Ham': 'pig', 'nova lox': 'Salmon' }
            x = data['food'].map(animal)
            data['animal'] = x
            data

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~