文/michaelgbw
import numpy,pandas
python這個語言有著天然的數(shù)據(jù)計算優(yōu)勢,numpy,scipy,pandas這些拓展的出現(xiàn)更是如虎添翼~更有ML的sklearn等,這里我們先打好基礎独泞。
# encoding=utf-8
from __future__ import division
import pandas as pd
import numpy as np
spark DF
說起pandas凿宾,我總會和spark做比較短条,spark將RDD轉為DF叶堆,然后一句SQL搞定,不要太爽~
val str = "XXX,XXX,XXX,XXX"
val field = str.split(",")
.map(fieldName =>
StructField(fieldName, StringType, nullable = true))
val schema = StructType(field)
world.foreachRDD{
rdd =>
val rowRDD = rdd.map(a=> Row(a(1),a(2),a(3),a(4)))
val rechargeDF = sqc.createDataFrame(rowRDD, schema)
rechargeDF.registerTempTable("test")
var query = sqc.sql("select count(*) from test")
}
}
而且sql中可以添加UDF即用戶自己的function流礁,更是即為靈活
大家參考這個 http://www.tuicool.com/articles/yiMneyI
pandas
我們言歸正傳
來來來,我們跟著這個一起學習
# encoding=utf-8
from __future__ import division
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy as sy
dates = pd.date_range('20170228',periods=10)#從2017-02-28開始共10天
#randn(10,4)正太分布
df = pd.DataFrame(np.random.randn(10,4), index=dates, columns=list('ABCD'))
#randint整型隨機
df = pd.DataFrame(np.random.randint(1,10,size=(10,4)), index=dates, columns=list('ABCD'))
#可以自己制定DF
df2 = pd.DataFrame({ 'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
df.describe()
#count 每列的數(shù)量
#mean 每列的均值
#std 每列的標準差
#std 每列的標準差
#XX% 每列的個分位數(shù)
#max 每列的最大值
pd.read_csv() #讀scv
df.to_csv('xx.csv') #輸出為scv
df.sort_index(axis=1, ascending=False) #按列關鍵字排序
df.sort_values(by='B',ascending=False) #按值排序
df3 = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : np.random.randn(8),
'D' : np.random.randn(8)})
df.groupby(['A','B']).sum() #select sum(`A`),sum(`B`) from df group by A,B
df.groupby(['A']).count() #select count(`A`) from df group by A
而我們整理好的dataframe 轉化為其他數(shù)據(jù)類型也十分方便罗丰。
numpy,scipy,pandas區(qū)別
- numpy主要是用于數(shù)值計算神帅,包括sin、cos萌抵、exp等枕稀,同時提供N維數(shù)據(jù)對象;
- pandas提供了數(shù)據(jù)結構和數(shù)據(jù)分析工具;
- scipy 則是基于numpy萎坷,提供了一個在python中做科學計算的工具集凹联,也就是說它是更上一個層次的庫;
結語
先知道有這個東西哆档,然后多在實際中應用哦~