导入库
import pandas as pd
import numpy as np
import databricks.koalas as ks
from pyspark.sql import SparkSession
对象的创建
- 通过传递值列表来创建Koalas系列,让Koalas创建默认的整数索引:
s = ks.Series([1, 3, 5, np.nan, 6, 8])
- 通过传递对象的字典来创建Koalas DataFrame,这些对象可以转换为类似序列的对象。
kdf = ks.DataFrame(
{'a': [1, 2, 3, 4, 5, 6],
'b': [100, 200, 300, 400, 500, 600],
'c': ["one", "two", "three", "four", "five", "six"]},
index=[10, 20, 30, 40, 50, 60])
- 通过传递带有日期时间索引和带标签的列的numpy数组来创建pandas DataFrame
dates = pd.date_range('20130101', periods=6)
pdf = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
- 现在,此Pandas数据框可以转换为Koalas数据框
kdf = ks.from_pandas(pdf)
- 它的外观和行为与pandas DataFrame相同
- 从pandas DataFrame创建Spark DataFrame
spark = SparkSession.builder.getOrCreate()
sdf = spark.createDataFrame(pdf)
- 从Spark DataFrame创建Koalas DataFrame。to_koalas()会自动附加到Spark DataFrame,并且在导入Koalas时可用作API。
kdf = sdf.to_koalas()
查看数据
- 查看koalas数据框前5行数据
- 显示索引,列和基础的numpy数据。
- 描述显示您的数据的快速统计摘要
- 转置数据
- 按其索引排序
kdf.sort_index(ascending=False)
- 按值排序
kdf.sort_values(by='B')
缺少数据
- Koalas主要使用该值np.nan表示丢失的数据。默认情况下,它不包括在计算中。
# 取前四行,列表新增一列:E列
pdf1 = pdf.reindex(index=dates[0:4], columns=list(pdf.columns) + ['E'])
# 给索引的第一第二行的E列赋值,因为第三第四行的E列的数据没赋值,所以为空
pdf1.loc[dates[0]:dates[1], 'E'] = 1
# 将此pandas数据框转化为Koalas数据框
kdf1 = ks.from_pandas(pdf1)
-
删除任何缺少数据的行。
我们可以看到,第三第四行因为有空值,所以这两行数据就被删除了。 -
填充数值给那些含有空值的数据。
-
查看koalas数据框中数值列的均值,此操作通常会排除丢失的数据。执行描述性统计
Spark配置
- PySpark中的各种配置可以在考拉内部应用。例如,您可以启用Arrow优化,以极大地加快内部熊猫的转换。
# 保持默认值
prev = spark.conf.get("spark.sql.execution.arrow.enabled")
# 使用默认索引防止开销。
ks.set_option("compute.default_index_type", "distributed")
# 忽略来自Arrow优化的警告。
import warnings
warnings.filterwarnings("ignore")
- 由下图我们可以看到,使用默认值,ks执行一次循环只需要322 ms ± 34.6 ms。而不使用默认值,ks执行一次循环则需要922 ms ± 58.2 ms。
分组
“分组依据”是指涉及以下一个或多个步骤的过程:
-
根据某些条件将数据分成几组
-
将功能独立应用于每个组
-
将结果合并为数据结构
kdf = ks.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)})
- 分组,然后将sum()函数应用于结果组。可以看到:C列和D列关于A索引的数值总和。
- 按多列分组会形成一个层次结构索引,我们可以再次应用sum函数。
kdf.groupby(['A', 'B']).sum()
获得的数据输入/输出
- CSV
# 将此koalas数据框转化为csv文件
kdf.to_csv('foo.csv')
# 读取csv文件为koalas的数据框
ks.read_csv('foo.csv').head(10)
- Parquet
Parquet是一种高效和紧凑的文件格式,读取和写入更快。
# 将此koalas数据框转化为Parquet文件格式
kdf.to_parquet('bar.parquet')
# 读取Parquet文件为koalas的数据框
ks.read_parquet('bar.parquet').head(10)
关于koalas数据框的基本操作就介绍到这里。如果各位路过的朋友觉得对自己有帮助的话,麻烦关注一下小编或者点个赞再走哦~