目錄
前言
一、Pandas數據結構
1.Series
2.DataFrame
?3.Time-Series
?4.Panel
5.Panel4D
6.PanelND
二、Pyspark實例創(chuàng)建
1.引入庫
2.轉換實現
pyspark pandas series創(chuàng)建
pyspark pandas dataframe創(chuàng)建
from_pandas轉換
?Spark DataFrame轉換
?三、PySpark Pandas操作
1.讀取行列索引
2.內容轉換為數組
3.DataFrame統計描述
4.轉置
5.排序
按行索引排序
?按某列值排序
點關注,防走丟,如有紕漏之處,請留言指教,非常感謝
前言
時至如今Pandas仍然是十分火熱的基于Python的數據分析工具,與numpy、matplotlib稱為數據分析三大巨頭,是學習Python數據分析的必經之路。Pandas提供了大量能使我們快速便捷地處理數據的函數和方法,它是使Python成為強大而高效的數據分析環(huán)境的重要因素之一。因此我們做分布式數據分析也同樣離不開Pandas的支持。Spark中的PySpark是內嵌有Pandas接口的:
使用方式和直接使用Pandas庫是有所不同的,本篇文章將使用pyspark的pandas和pandas兩種數據操作方式來展示pyspark的pandas該如何靈活使用來進行數據分析。
文章還是緊接上篇文章:
PySpark數據分析基礎:PySpark基礎功能及基礎語法詳解
一、Pandas數據結構
Pandas數據結構是通用了,共有六種數據結構,想要詳細了解可以去看我這篇文章:一文速學-數據分析之Pandas數據結構和基本操作代碼:
1.Series
Series要理解很簡單,就像它的單詞為系列的意思。類似與數據結構中的字典有索引和對應值,也可以理解為數組,在Series中的下標1,2,3,...索引對應它的不同值。
????????
2.DataFrame
剛才從Series轉化為DataFrame就可以看出DataFrame的格式就像一張表格,包含行和列索引。通過對應的行列對DataFrame進行操作,更像是對SQL中表格處理,兩者有一定的類似之處。因此學過SQL的對DataFrane的操作更容易了解。
?3.Time-Series
以時間為索引的Series。
?4.Panel
三維的數組,可以理解為DataFrame的容器。
5.Panel4D
像Panel一樣的4維數據容器。
6.PanelND
擁有factory集合,可以創(chuàng)建像Panel4D一樣N維命名容器的模塊。
后面四個用的場景十分少見,Series和DataFrame是最常用的數據類型,掌握這兩個數據結構操作方法足夠進行數據分析。
二、Pyspark實例創(chuàng)建
1.引入庫
import pandas as pd
import numpy as np
import pyspark.pandas as ps
from pyspark.sql import SparkSession
如果運行上述代碼有 WARNING:root:‘PYARROW_IGNORE_TIMEZONE‘ environment variable was not set.可以加上:
import os
os.environ["PYARROW_IGNORE_TIMEZONE"] = "1"
2.轉換實現
通過傳遞值列表,在Spark上創(chuàng)建pandas,讓pandas API在Spark上創(chuàng)建默認整數索引:
pyspark pandas series創(chuàng)建
和pandas是一樣的
s = ps.Series([1, 3, 5, np.nan, 6, 8])
pyspark pandas dataframe創(chuàng)建
和pandas也是一樣的:
ps_df=ps.DataFrame(
{'name':['id1','id2','id3','id4'],
'old':[21,23,22,35],
'city':['杭州','北京','南昌','上海']
},
index=[1,2,3,4])
from_pandas轉換
我們先用pandas創(chuàng)建一個普通的DataFrame:
pd_df=pd.DataFrame(
{'name':['id1','id2','id3','id4'],
'old':[21,23,22,35],
'city':['杭州','北京','南昌','上海']
},
index=[1,2,3,4])
之后直接使用from_pandas開始轉換就可以了:
ps_df=ps.from_pandas(pd_df)
type(ps_df)
?
?Spark DataFrame轉換
也可以通過Pandas的DataFrame轉換為Spark DataFrame:
spark = SparkSession.builder.getOrCreate()
sp_df=spark.createDataFrame(pd_df)
sp_df.show()
?
通過Spark DataFrame轉換為PySpark DataFrame:
ps_df=sp_df.pandas_api()
?
?且和pandas一樣查看數據類型方法是一樣的:
ps_df.dtypes
?
Spark DataFrame中的數據在默認情況下并不保持自然順序。
通過設置compute.ordered_head
可以保持自然順序,但它會導致內部排序的性能開銷。
ps_df.head()
?
?三、PySpark Pandas操作
1.讀取行列索引
讀取行索引:
ps_df.index
Int64Index([0, 1, 2, 3], dtype='int64')
讀取列索引:
ps_df.columns
Index(['name', 'old', 'city'], dtype='object')
2.內容轉換為數組
ps_df.to_numpy()
?
3.DataFrame統計描述
ps_df.describe()
描述的數值均為float
?
4.轉置
ps_df.T
轉置內容old列為int64,轉置會報錯,需要先轉換為str再進行轉置:
ps_df['old']=ps_df['old'].astype(str)
ps_df.T
?
5.排序
按行索引排序
ps_df.sort_index(ascending=False)
?按某列值排序
ps_df.sort_values(by='old')
文章來源:http://www.zghlxwxcb.cn/news/detail-788018.html
點關注,防走丟,如有紕漏之處,請留言指教,非常感謝
以上就是本期全部內容。我是fanstuck ,有問題大家隨時留言討論 ,我們下期見。文章來源地址http://www.zghlxwxcb.cn/news/detail-788018.html
到了這里,關于PySpark數據分析基礎:PySpark Pandas創(chuàng)建、轉換、查詢、轉置、排序操作詳解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!