文章目录

  • NumPy
  • arrary
  • matrix
  • pandas
  • Series
  • DataFrame
  • pyspark
  • DataFrame
  • 通过RDD创建DataFrame
  • 通过读csv创建DataFrame
  • 通过pandas、hive创建DataFrame
  • RDD
  • pyspark Dataframe转list


NumPy

NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境。

SciPy是算法库和数学工具包。包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

Matplotlib 是Python编程语言及其数值数学扩展包NumPy的可视化操作界面。

arrary

import numpy as np
# 直接定义
X = np.array([[ 1., -1.,  2.],
               [ 2.,  0.,  0.],
               [ 0.,  1., -1.]])

# arange+reshape创建
Y = np.arange(15).reshape(3, 5)
# 显示:array([[ 0,  1,  2,  3,  4],
#             [ 5,  6,  7,  8,  9],
#             [10, 11, 12, 13, 14]])

#linspace+resize创建
Z = np.linspace(0, 4, 9)
Z.resize(3, 3)
# 显示:array([[0. , 0.5, 1. ],
#             [1.5, 2. , 2.5],
#             [3. , 3.5, 4. ]])

# one创建
np.ones((3, 2))
# 显示:array([[1., 1.],
#             [1., 1.],
#             [1., 1.]]) 

# zeros创建
np.zeros((2, 3))
# 显示:array([[0., 0., 0.],
#             [0., 0., 0.]])

# eye单位矩阵创建
np.eye(3)
# 显示:array([[1., 0., 0.],
#             [0., 1., 0.],
#             [0., 0., 1.]])

# diag创建
y = np.array([4, 5, 6])
np.diag(y)#以y为主对角线创建矩阵
# 显示:array([[4, 0, 0],
#             [0, 5, 0],
#             [0, 0, 6]])

ndarray.shape:数组的维度
ndarray.size:数组元素的总个数
ndarray.dtype:对象的元素类型

matrix

np.mat()方法的参数可以是列表和元组的任意混合嵌套、字符串、ndarray对象。其中字符串每一行以分号分割,每列元素以逗号隔开。且列表和元组的任意混合嵌套深度不能大于2。mat在numpy中还有一个别名,叫做asmatrix。

np.mat([[1,2],[5,7]])  
# 显示:matrix([[1, 2],
#              [5, 7]]) 

# 参数是ndarray对象
np.mat(np.array(((1,2),(5,7),(7,9))))  
# 显示:matrix([[1, 2],
#              [5, 7],
#              [7, 9]])

# 参数是string对象
np.mat("1,2,3;4,5,6")
# 显示:matrix([[1, 2, 3],
#              [4, 5, 6]])

pandas

Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

Series

Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近。

import pandas as pd
from pandas import Series
s = Series([1,4,'ww','tt'])
# 显示:0     1
#      1     4
#      2    ww
#      3    tt
dtype: object

DataFrame

DataFrame:二维的表格型数据结构。它的竖行称之为 columns,横行跟前面的 Series 一样,称之为 index。

from pandas import Series,DataFrame

# 通过dict创建DataFrame
data = {"name":['google','baidu','yahoo'],"marks":[100,200,300],"price":[1,2,3]}
f1 = DataFrame(data)
# 规定columns的顺序
f2 = DataFrame(data,columns=['name','price','marks'])
# 规定index的顺序
f3 = DataFrame(data,columns=['name','marks','price'],index=['a','b','c'])

# 通过dict套dict的方式创建DataFrame
newdata = {'lang':{'first':'python','second':'java'},'price':{'first':5000,'second':2000}}

# 取数
f4['lang']
# 显示:first     python
#      second      java
#      Name: lang, dtype: object

f1显示:

python把数据转成int_python把数据转成int

pyspark

DataFrame

DataFrame比RDD领先。因为它提供了内存管理和优化的执行计划。
创建DataFrame,可以从不同的数据创建。

通过RDD创建DataFrame
# 通过RDD创建DataFrame
# 从集合中创建新的RDD
stringCSVRDD = spark.sparkContext.parallelize([
                (123, "Katie", 19, "brown"),
                (456, "Michael", 22, "green"),
                (789, "Simone", 23, "blue")])
# 设置dataFrame将要使用的数据模型,定义列名,类型和是否为能为空
schema = StructType([StructField("id", LongType(), True),
                     StructField("name", StringType(), True),
                     StructField("age", LongType(), True),
                     StructField("eyeColor", StringType(), True)])
swimmers = spark.createDataFrame(stringCSVRDD,schema)
通过读csv创建DataFrame
df = pd.DataFrame(np.random.rand(5,5),columns=['a','b','c','d','e']).applymap(lambda x: int(x*10))
    file=r"random.csv"
df.to_csv(file,index=False)
df1 = spark.read.csv('random.csv',header=True, inferSchema=True)
通过pandas、hive创建DataFrame
#通过pandas创建
df = pd.DataFrame(np.random.random((4,4)))
spark_df = spark.createDataFrame (df,schema=['a','b','c','d'])

#通过hive创建 
df = spark.sql("select * from table")

RDD

pyspark Dataframe转list

M_list = M_df.collect()
type(M_list )
# list
M_list[0]
# Row(cd='47', name='插座', dep='89', dep_name='*部', l='366.147393481', m='110.966901535', dt='2018-01-31')
# 取数
l = [float(x['l']) for x in M_list]
m = [float(x['m']) for x in M_list]