-
python输入一组数字求平均值和标准差_如何计算PySpark DataFrame的平均值和标准差?...
2020-12-09 21:49:02这是一个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"中的第二个元素。最后,在这个新列上调用聚合函数。
-
Python提取Excel表格数据并用DataFrame处理求平均值输出
2018-10-17 14:19:05使用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:43df = 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
-
使用IDEA编写SparkSql自定义聚合函数——弱类型DataFrame(求平均值)
2020-02-21 13:45:38SparkSql自定义聚合函数(弱类型DataFrame)求平均值 弱类型DataFrame提供了相关的聚合函数, 如 count(),countDistinct(),avg(),max(),min(); 除此之外,用户可以设定自己的自定义聚合函数。 代码测试前请确保...SparkSql自定义聚合函数(弱类型DataFrame)求平均值
弱类型DataFrame提供了相关的聚合函数, 如 count(),countDistinct(),avg(),max(),min();
除此之外,用户可以设定自己的自定义聚合函数。
代码测试前请确保各个组件均已安装
与强类型的代码思想差不多一样,但是书写有些变化,可以参考强类型写法:
强类型DataSet1、环境准备
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中某一列数值的平均值?如何求均线?
2020-04-01 16:52:50Python中如何求DataFrame中某一列数的日平均值? 例如求df对象中close列的5日均线: 1.使用循环,采用手动计算的方式: df['close'][i-4:i+1].mean() 获取第i天的5日均线 2.对整个dataframe对象,使用rolling... -
R语言求取DataFrame(数据帧)多行/列平均值
2021-01-20 22:14:58在Excel 使用average先求取两格子的平均值,然后可以进一步拉两个格子求取整行/整列的平均值。 这在R语言中使用rowMeans求取多行平均值,或colMeans求取多列平均值 示例如下: #create data frame data <- ... -
python3 ks检验 求平均值方差标准差中位数 dataframe使用engine写入数据库 pandas使用
2018-10-17 09:43:29####计算平均值和方差/标准差 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... -
dataframe 同一条件对多列求均值_这三种计算平均值的方法,你都会了么
2021-01-15 11:44:05小编做为一个多年资深搞仓库卫生,管理库存计划的打工人,由于工作需要,也接触了几种不同的计算平均值的方法,虽然现在系统是越来越强大了,很多数据,系统都能够直接计算出来的。但是,知其然才能知其所以然,了解... -
Python Pandas实现数据分组求平均值并填充nan的示例
2020-12-31 22:25:47Python实现按某一列关键字分组,并计算各列的平均值,并用该值填充该分类该列的nan值。 DataFrame数据格式 fillna方式实现 groupby方式实现 DataFrame数据格式 以下是数据存储形式: fillna方式实现 1、按照... -
Python Pandas实现数据分组求平均值并填充nan
2017-12-23 13:33:48Python实现按某一列关键字分组,并计算各列的平均值,并用该值填充该分类该列的nan值。 DataFrame数据格式 fillna方式实现 groupby方式实现 DataFrame数据格式以下是数据存储形式: fillna方式实现 按照... -
python分段求均值_Python Pandas实现数据分组求平均值并填充nan的示例
2020-12-19 11:48:19Python实现按某一列关键字分组,并计算各列的平均值,并用该...fillna方式实现1、按照industryName1列,筛选出业绩2、筛选出相同行业的Series3、计算平均值mean,采用fillna函数填充4、append到新DataFrame中5、循环... -
python筛选数据求均值_Python Pandas实现数据分组求平均值并填充nan的示例
2020-12-03 03:18:13Python实现按某一列关键字分组,并计算各列的平均值,并用该...fillna方式实现1、按照industryName1列,筛选出业绩2、筛选出相同行业的Series3、计算平均值mean,采用fillna函数填充4、append到新DataFrame中5、循环... -
pandas用均值填充nan_Python Pandas实现数据分组求平均值并填充nan的示例
2020-12-24 17:28:36Python实现按某一列关键字分组,并计算各列的平均值,并用该...fillna方式实现1、按照industryName1列,筛选出业绩2、筛选出相同行业的Series3、计算平均值mean,采用fillna函数填充4、append到新DataFrame中5、循环... -
dataframe 同一条件对多列求均值_EXCEL计算修剪平均和条件平均,其实很简单
2021-01-15 11:44:08作者:彭佳 转自: 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_... -
python求numpy中array按列非零元素的平均值案例
2020-12-17 17:36:32输出:一个一维的平均值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' -
【pandas】根据dataframe某一列的值求另外一列的均值,然后将结果转换成键值对
2020-07-30 08:17:18情景:计算两次考试,所有学生的平均成绩: '''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.... -
python用函数求n个数的平均值_Python pandaps创建一个函数来计算n列行的平均值
2021-01-13 20:30:25我想做一个函数,它可以找到两件事:平均得分(满分100%),其中正面=1,反面=0他们为了得到这个分数而玩的游戏的数量是否可以为n列设置动态函数?在import pandas as pdimport numpy as npdf=pd.DataFrame({'Users': ... -
DataFrame分组自定义统计
2020-08-17 17:11:15读Excel直接得到一个dataframe,按月进行分组,每个组分别调用自定义的函数求平均值。 中间调用自定义函数循环处理分组dataframe的时候报错,debug才发现: dataframe用groupby分组以后,可以分别读取每一块,但其中... -
pd.dataFrame的var()默认求的居然是样本方差!!!
2019-11-23 22:15:34x = 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...