精华内容
下载资源
问答
  • 这是一个MWE: from pyspark.sql.types import IntegerType from pyspark.sql.functions import explode, col, udf, mean as _mean, stddev as _stddev # mock up sample dataframe df = sqlCtx.createDataFrame( ...

    您可以使用内置函数来获取聚合统计信息。以下是如何获得均值和标准偏差。

    from pyspark.sql.functions import mean as _mean, stddev as _stddev, col

    df_stats = df.select(

    _mean(col('columnName')).alias('mean'),

    _stddev(col('columnName')).alias('std')

    ).collect()

    mean = df_stats[0]['mean']

    std = df_stats[0]['std']

    请注意,有三种不同的标准偏差功能。从文档中我使用的文档(stddev)返回以下内容:

    聚合函数:返回无偏样本标准差

    组中的表达

    您也可以使用describe()方法:

    df.describe().show()

    更新:这是您处理嵌套数据的方法。

    使用explode将值提取到单独的行中,然后调用mean和stddev,如上所示。

    这是一个MWE:

    from pyspark.sql.types import IntegerType

    from pyspark.sql.functions import explode, col, udf, mean as _mean, stddev as _stddev

    # mock up sample dataframe

    df = sqlCtx.createDataFrame(

    [(680, [[691,1], [692,5]]), (685, [[691,2], [692,2]]), (684, [[691,1], [692,3]])],

    ["product_PK", "products"]

    )

    # udf to get the "score" value - returns the item at index 1

    get_score = udf(lambda x: x[1], IntegerType())

    # explode column and get stats

    df_stats = df.withColumn('exploded', explode(col('products')))\

    .withColumn('score', get_score(col('exploded')))\

    .select(

    _mean(col('score')).alias('mean'),

    _stddev(col('score')).alias('std')

    )\

    .collect()

    mean = df_stats[0]['mean']

    std = df_stats[0]['std']

    print([mean, std])

    哪个输出:

    [2.3333333333333335, 1.505545305418162]

    您可以使用numpy验证这些值是否正确:

    vals = [1,5,2,2,1,3]

    print([np.mean(vals), np.std(vals, ddof=1)])

    说明:您的"products"列是list的{​​{1}}。调用list将为外部explode的每个元素创建一个新行。然后从每个展开的行中获取list值,这些行已定义为2元素"score"中的第二个元素。最后,在这个新列上调用聚合函数。

    展开全文
  • 使用ipython进行代码编写,清洗excel的数据并且转化到DataFrame上进行平均值的输出,最后输出为新的Excel的表格

    Python读取Excel文件取平均数

    1.文件读取

    下面我们将对这个excel文件进行读取
    在这里插入图片描述

    import xlrd                           #xlrd是excel文件读取库 只读写
    data = xlrd.open_workbook('a.xlsx')   #打开excel文件
    table = data.sheets()[0]              #打开第一张表格
    nrows = table.nrows                   #获取表格的行数 
    

    接下来利用For循环对每行进行处理,处理的目的是把想要的数据存储在列表当中

    for i in range(nrows):
    	name_.append(table.row_values(i)[0])
    	data_.append(table.row_values(i)[2:5])
    

    2.整合为字典

    这一步是获取数据后第一个要处理的关键
    初始化字典的方法有许多
    但是最常用的方法还是使用
    zip
    可以把两个对应位置的列表进行整合为字典

    dict_data = dict(zip(name_,data_))
    

    输出结果在这里插入图片描述

    再根据字典输出为DataFrame

    data  = pd.DataFrame(dict_data,index=['政治','纪律','品德','学习'])
    

    再进行转置输出

    data.T
    

    在这里插入图片描述

    2.平均数的读取

     data.mean(axis = 1)
    

    mean()里面axis表示的是坐标轴,axis = 0表示对纵向求平均值,axis = 1表示对横向求平均值
    在这里插入图片描述

    展开全文
  • 学习笔记-DataFrame求多列平均值

    万次阅读 2020-02-28 01:46:43
    df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 3, 3],'B':[1, 4, 3, 2, 1, 3, 3],'C':[1, 4, 3, 2, 1, 3, 3]}) df >>> A B C 0 1 1 1 1 1 4 4 2 1 3 3 3 2 2 2 4 2 1 1 5 3 3 3 6 3 3 3 df['D'] = df[['A...
    df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 3, 3],'B':[1, 4, 3, 2, 1, 3, 3],'C':[1, 4, 3, 2, 1, 3, 3]}) 
    df
    >>>
        A	B	C
    0	1	1	1
    1	1	4	4
    2	1	3	3
    3	2	2	2
    4	2	1	1
    5	3	3	3
    6	3	3	3
    
    df['D'] = df[['A', 'B']].mean(axis=1)
    df.loc[:, 'E'] = np.mean([df['A'], df['B']],0) #  如果没有0,求的是两列所有值的平均数
    df
    >>>
    	A	B	C	  D	  E
    0	1	1	1	1.0	1.0
    1	1	4	4	2.5	2.5
    2	1	3	3	2.0	2.0
    3	2	2	2	2.0	2.0
    4	2	1	1	1.5	1.5
    5	3	3	3	3.0	3.0
    6	3	3	3	3.0	3.0
    
    展开全文
  • SparkSql自定义聚合函数(弱类型DataFrame求平均值 弱类型DataFrame提供了相关的聚合函数, 如 count(),countDistinct(),avg(),max(),min(); 除此之外,用户可以设定自己的自定义聚合函数。 代码测试前请确保...

    SparkSql自定义聚合函数(弱类型DataFrame)求平均值

    弱类型DataFrame提供了相关的聚合函数, 如 count(),countDistinct(),avg(),max(),min();
    除此之外,用户可以设定自己的自定义聚合函数。
    代码测试前请确保各个组件均已安装
    与强类型的代码思想差不多一样,但是书写有些变化,可以参考强类型写法:
    强类型DataSet

    1、环境准备

    	1、准备json文件:
    	{"name": "zhangsan","age": 20}
    	{"name": "lisi","age": 30}
    	{"name": "wangwu","age": 40}
    	2、使用IDEA软件,创建maven工程
    	3、添加pom依赖
    

    2、maven工程pom依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.spark.bigdata</groupId>
        <artifactId>sparkSql_Test</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_2.12</artifactId>
                <version>2.4.4</version>
            </dependency>
            
            <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_2.12</artifactId>
                <version>2.4.4</version>
            </dependency>
        </dependencies>
    </project>
    
    

    3、创建类 AgeAvgFunction.Class

    // 1)声明用户自定义聚合函数
    // 2)继承UserDefinedAggregateFunction类
    // 3)重写方法
    class AgeAvgFunction extends UserDefinedAggregateFunction {
      // 函数输入的数据结构
      override def inputSchema: StructType = {
        new StructType().add("age", LongType)
      }
    
      // 计算时的数据结构(缓冲区的计算结构)
      override def bufferSchema: StructType = {
        new StructType().add("sum", LongType).add("count", LongType)
      }
    
      // 数据计算完毕之后的结构(函数返回数据类型)
      override def dataType: DataType = DoubleType
    
      // 稳定性
      override def deterministic: Boolean = true
    
      // 当前计算之前缓冲区的初始化(就是sum和count初始化是什么值)
      // 不考虑类型,只考虑结构
      override def initialize(buffer: MutableAggregationBuffer): Unit = {
        buffer(0) = 0L // 0代表第一个sum 初始化为0
        buffer(1) = 0L // 1代表第二个count 初始化为0
      }
    
      // 根据查询结构更新缓冲区数据
      override def update(buffer: MutableAggregationBuffer, input: Row): Unit = {
        buffer(0) = buffer.getLong(0) + input.getLong(0)
        buffer(1) = buffer.getLong(1) + 1
      }
    
      // 将多个节点的缓冲区合并
      override def merge(buffer1: MutableAggregationBuffer, buffer2: Row): Unit = {
        // sum=缓冲区第一个位置的sum加上缓冲区第二个位置的sum
        buffer1(0) = buffer1.getLong(0) + buffer2.getLong(0)
        // count
        buffer1(1) = buffer1.getLong(1) + buffer2.getLong(1)
      }
    
      // 计算最终结果
      override def evaluate(buffer: Row): Any = {
        buffer.getLong(0).toDouble / buffer.getLong(1)
      }
    }
    

    4、创建SparkSql_aggregate.Scala

    object SparkSql_aggregate {
      def main(args: Array[String]): Unit = {
        // 创建配置对象
        val conf = new SparkConf().setMaster("local[*]").setAppName("SparkSql_aggregate")
        // 创建SparkSql的环境对象
        val spark: SparkSession = new sql.SparkSession.Builder().config(conf).getOrCreate()
        /* 进行转换之前需要引入隐式转换规则
            这里Spark不是报名的含义,是SparkSession对象的名字*/
        import spark.implicits._
        // 创建聚合函数对象
        val udaf = new AgeAvgFunction
        // 注册聚合函数
        spark.udf.register("avgAge", udaf)
        // 使用聚合函数
        // 读取数据,构建DF
        val df: DataFrame = spark.read.json("input/sparksql.json")
        // 数据视图
        df.createOrReplaceTempView("user")
        // Sql语句
        spark.sql("select avgAge(age) from user").show()
        // 释放资源
        spark.stop()
      }
    
    }
    

    5、运行SparkSql_Aggregate.Scala

    得到结果:
    在这里插入图片描述

    展开全文
  • Python中如何求DataFrame中某一列数的日平均值? 例如df对象中close列的5日均线: 1.使用循环,采用手动计算的方式: df['close'][i-4:i+1].mean() 获取第i天的5日均线 2.对整个dataframe对象,使用rolling...
  • 在Excel 使用average先取两格子的平均值,然后可以进一步拉两个格子取整行/整列的平均值。 这在R语言中使用rowMeans取多行平均值,或colMeans取多列平均值 示例如下: #create data frame data <- ...
  • ####计算平均值和方差/标准差 res1 = gpCommand.select_data() cust_no1 = [] item_num1 = [] for item1 in res1[0]: cust_no1.append(item1[1]) item_num1.append(item1[2]) df1 = pd.DataFrame({'cust_no1...
  • 小编做为一个多年资深搞仓库卫生,管理库存计划的打工人,由于工作需要,也接触了几种不同的计算平均值的方法,虽然现在系统是越来越强大了,很多数据,系统都能够直接计算出来的。但是,知其然才能知其所以然,了解...
  • Python实现按某一列关键字分组,并计算各列的平均值,并用该值填充该分类该列的nan值。 DataFrame数据格式 fillna方式实现 groupby方式实现 DataFrame数据格式 以下是数据存储形式: fillna方式实现 1、按照...
  • Python实现按某一列关键字分组,并计算各列的平均值,并用该值填充该分类该列的nan值。 DataFrame数据格式 fillna方式实现 groupby方式实现 DataFrame数据格式以下是数据存储形式: fillna方式实现 按照...
  • Python实现按某一列关键字分组,并计算各列的平均值,并用该...fillna方式实现1、按照industryName1列,筛选出业绩2、筛选出相同行业的Series3、计算平均值mean,采用fillna函数填充4、append到新DataFrame中5、循环...
  • Python实现按某一列关键字分组,并计算各列的平均值,并用该...fillna方式实现1、按照industryName1列,筛选出业绩2、筛选出相同行业的Series3、计算平均值mean,采用fillna函数填充4、append到新DataFrame中5、循环...
  • Python实现按某一列关键字分组,并计算各列的平均值,并用该...fillna方式实现1、按照industryName1列,筛选出业绩2、筛选出相同行业的Series3、计算平均值mean,采用fillna函数填充4、append到新DataFrame中5、循环...
  • 作者:彭佳 转自: Excel之家ExcelHome小伙伴们好啊,今天和大家分享一组用于平均值计算的函数,分别是:算术平均值、修剪平均值、条件平均值和多条件平均值计算。1. AVERAGE功能:计算各参数的平均值常用写法为:=...
  • pandas滑动平均值

    2021-03-02 15:56:04
    如果最小值、最大、求和等,可以改变最后面的函数,比如 df.rolling(3, center=True).min() df.rolling(3, center=True).max() df.rolling(3, center=True).sum() 其他参数: DataFrame.rolling(window, min_...
  • 输出:一个一维的平均值array import numpy as np def non_zero_mean(np_arr): exist = (np_arr != 0) num = np_arr.sum(axis=1) den = exist.sum(axis=1) return num/den 如果要求按行的非零元素的平均值,把...
  • Python按某一列其余列的平均值

    千次阅读 2020-09-14 11:34:09
    根据class_type对数据进行group,分别x, y, z的平均值 df = pd.DataFrame(data) #给df加上列名 df.columns = ['x','y','z','seg'] #要被group的列名 cols = ['x','y','z'] #根据哪个列进行group gp_col = 'seg'
  • 情景:计算两次考试,所有学生的平均成绩: '''a.csv date,name,grade 2020-07-01,mary,70 2020-07-01,tom,80 2020-07-01,jerry,70 2020-07-02,mary,80 2020-07-02,tom,90 2020-07-02,tom,100''' grade = pd....
  • 我想做一个函数,它可以找到两件事:平均得分(满分100%),其中正面=1,反面=0他们为了得到这个分数而玩的游戏的数量是否可以为n列设置动态函数?在import pandas as pdimport numpy as npdf=pd.DataFrame({'Users': ...
  • 读Excel直接得到一个dataframe,按月进行分组,每个组分别调用自定义的函数求平均值。 中间调用自定义函数循环处理分组dataframe的时候报错,debug才发现: dataframe用groupby分组以后,可以分别读取每一块,但其中...
  • x = pd.DataFrame([[1, 2, 3], [4, 5, 6], [10, 20, 30]]) print("伪方差:\n", x.var()) # 默认 ddof=1 是伪方差 print("\n方差:\n", x.var(ddof=0)) # 方差 结果: ...以第一列为例,平均值是5...

空空如也

空空如也

1 2 3 4
收藏数 80
精华内容 32
关键字:

dataframe求平均值