Spark實戰(5) DataFrame基礎之GroupBy和Aggregate
groupBy()
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('aggs').getOrCreate()
df = spark.read.csv('sales_info.csv', inferSchema = True, header = True)
df.printSchema()
df.show()
df.groupby("Company")
df.groupby("Company").mean().show()
df.groupby("Company").sum().show( )
Aggregation
# general method do aggregation
df.agg({'Sales':'sum'}).show()
df.agg({'Sales':'max'}).show() # notion line
# we could set the group by and then use aggregate
group_data = df.groupBy("Company")
group_data.agg({'Sales':'max'}).show() # the same effect with the notion line
Aggregation Function
from pyspark.sql.functions import countDistinct, avg, stddev
# aggregate function to select
df.select(countDistinct('Sales'))
df.select(countDistinct('Sales'),alias('Count of Distinct Sales'))
# how to format the result
from pyspark.sql.functions import format_number
# add alias
sales_std = df.select( stddev('Sales').alias('std'))
# format the number
sales_std.select(format_number('std',2)).show()
# how to sort the result
# sort things by sales
df.orderBy("Sales").show()
df.orderBy(df['Sales'].desc()).show() # descending order
相關推薦
Spark實戰(5) DataFrame基礎之GroupBy和Aggregate
groupBy() from pyspark.sql import SparkSession spark = SparkSession.builder.appName('aggs').getOrCreate() df = spark.read.csv('s
Spark實戰(5) DataFrame基礎之處理缺失值
Drop Missing Value from pyspark.sql import SparkSession spark = SparkSession.builder.appName('aggs').getOrCreate() df = spark.read.
Spark實戰(3) DataFrame基礎之行列操作和SQL
文章目錄行列操作SQL操作 行列操作 df['age'] # I only get a column object df.select('age').show() # I get a datafram with a column that we could us
Spark實戰(4) DataFrame基礎之資料篩選
文章目錄 filter寫法一 filter寫法二 條件符號 獲取結果 filter寫法一 from pyspark.sql import SparkSession spark = SparkSession.builder.app
spark基礎之RDD和DataFrame的轉換方式
一 通過定義Case Class,使用反射推斷Schema 定義Case Class,在RDD的轉換過程中使用Case Class可以隱式轉換成SchemaRDD,然後再註冊成表,然後就可以利用sql
1.5程式設計基礎之迴圈控制 9. 描述 計算非負整數 m 到 n(包括m 和 n )之間的所有奇數的和
描述計算非負整數m到n(包括m和n)之間的所有奇數的和,其中,m不大於n,且n不大於300.例如m = 3,n = 12,其和則為:3+ 5 + 7 + 9 + 11 = 35。輸入兩個數m和n,兩個數
Python 基礎之列表和元組
bcp rtt fcn ott emd lns swe 二維數組 ttf list Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。 比如,列出班裏所有同學的名字,就可以用一個list表示: >>
java基礎之get和post的差別
oge tracking data- 宋體 行處理 art 其它 family 我們 上篇博文講到HTTP協議,本篇介紹HTTP請求方法中get和post的差別: 首先,最明顯的一點表象上的差別:GET 方式。將請求參數附加在url之後,POST將請求參數附加在請求頭
Java基礎之final和static關鍵字
推薦 構造方法 其他 如果 靈活 位置 map 機制 lis 一、final 根據程序上下文環境,它可以修飾非抽象類、非抽象類成員方法和變量。 final類不能被繼承,沒有子類,final類中的方法默認是final的。 final
補基礎之shell 和makefile
靜默 兩種 1.4 如果能 內置 字符 為我 賦值運算 循環 2.2.1、shell介紹 (1)shell可以理解為軟件系統提供給用戶操作的命令行界面,可以說他是人機交互的一種方式 (2)我們可以使用shell和操作系統、uboot等軟件系統進行交互。具體來說就是我們通過
python基礎之dict和set
算法 dict name 區別 刪除元素 哈希算法 div 數學 blog dict dict是dictionary的縮寫,python內置了字典,在其他語言中也稱為map,使用鍵值對儲存,具有極快的查找速度。 如果是只用list來實現,就需要兩個list,先在第一個lis
Go基礎之--排序和查找操作
ear () ola 方法 math https swa blog png 排序操作主要都在sort包中,導入就可以使用了import("sort") 常用的操作 sort.Ints:對整數進行排序sort.Strings:對字符串進行排序sort.Float64s:對
web前端基礎之BOM和DOM
js DOM BOM一、介紹JavaScript分為ECMAScript,DOM,BOM。BOM(Browser Object Model)是指瀏覽器對象模型,它使JavaScript有能力與瀏覽器進行“對話”。DOM (Document Object Model)是指文檔對象模型,通過它,可以訪問HTML
Java基礎之this和super關鍵字用法
鏈接 tps 事件 歧義 調用 數據 沒有 方法名 訪問 this 在java中,this是一個引用當前類對象的引用變量,主要有以下幾種用法: 引用當前類的實例變量· this關鍵字可以用來引用當前類的實例變量。如果實例變量和某個方法的參數之間存在歧義(實例變量和參數命名相
前端基礎之BOM和DOM
周期 引用 海澱區 寫到 直接 hist 接下來 height ctype 前戲 到目前為止,我們已經學過了JavaScript的一些簡單的語法。但是這些簡單的語法,並沒有和瀏覽器有任何交互。 也就是我們還不能制作一些我們經常看到的網頁的一
Java 基礎 之 continue和 break
不執行 string In pre www ont ring str 如果 http://www.verejava.com/?id=17159306674727 public class Test2 { public static void main(String[
Java基礎之關鍵字和保留關鍵字
1. Java關鍵字與Java保留字的區別? Java關鍵字(KeyWord): 對Java的編譯器有特殊的意義,他們用來表示一種資料型別或者表示程式的結構。 Java保留字(Reserved Word):為Java預留的關鍵字,現在還沒有用到,但在升級版本中可能作為關鍵
前端基礎之BOM和DOM和三個小示例(計時器、搜尋框、select聯動)
一、BOM和DOM JavaScript分為 ECMAScript,DOM,BOM。 BOM(Browser Object Model)是指瀏覽器物件模型,它使 JavaScript 有能力與瀏覽器進行“對話”。 DOM (Document Object Model)是指文件物件模型,通過它,
Java基礎之int和Integer區別
1、int和Integer的區別 1、Integer是int的包裝類,int則是java的一種基本資料型別 2、Integer變數必須例項化後才能使用,而int變數不需要 3、Integer實際是物件的引用,當new一個Integer時,實際上是生成一個指標指向此物件;而
Kotlin基礎之區間和型別轉換
fun main(args: Array<String>) { // 1.區間可以使用.. 表示, 注意..在使用的時候要保證起始值要小於結束值 // 輸出1 2 3 4 for (i in 1..4) { println(i) }