python大数据准备--pandas

文/michaelgbw

import numpy,pandas

python这个语言有着天然的数据计算优势,numpy,scipy,pandas这些拓展的出现更是如虎添翼~更有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 每列的数量
#mean 每列的均值
#std 每列的标准差
#std 每列的标准差
#XX% 每列的个分位数
#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

《python大数据准备--pandas》

而我们整理好的dataframe 转化为其他数据类型也十分方便。

《python大数据准备--pandas》

numpy,scipy,pandas区别

  • numpy主要是用于数值计算,包括sin、cos、exp等,同时提供N维数据对象;
  • pandas提供了数据结构和数据分析工具;
  • scipy 则是基于numpy,提供了一个在python中做科学计算的工具集,也就是说它是更上一个层次的库;

结语

先知道有这个东西,然后多在实际中应用哦~

    原文作者:michaelgbw
    原文地址: https://www.jianshu.com/p/7d4f94111d9e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞