Koalas - 入门基本操作

导入库

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数据框的基本操作就介绍到这里。如果各位路过的朋友觉得对自己有帮助的话,麻烦关注一下小编或者点个赞再走哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会点东西的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值