Добавление столбца в фрейм данных PySpark включает стандартные отклонения столбца на основе группировки по двум другим столбцам

Вы можете получить число символов всего файла, используя Counter над символами. Тогда процент каждого символа равен count for that character/total count.

from collections import Counter
from itertools import chain

with open(filename) as f:
    counts = Counter(chain.from_iterable(f))

total = sum(counts.values())

for character, count in counts.items():
    print('{:<2} - {:>6.2f}%'.format(repr(character)[1:-1], (count/total) * 100))

Для текста

Mary had a little lamb.

Это печатает

M  -   4.17%
a  -  16.67%
r  -   4.17%
y  -   4.17%
   -  16.67%
h  -   4.17%
d  -   4.17%
l  -  12.50%
i  -   4.17%
t  -   8.33%
e  -   4.17%
m  -   4.17%
b  -   4.17%
.  -   4.17%
\n -   4.17%
1
задан user2356563 19 January 2019 в 00:38
поделиться

1 ответ

Объединение на фрейме данных вызывает много перетасовки данных между исполнителями. В вашем случае вы можете обойтись без объединения. Используйте спецификацию окна для разделения данных на «lable» и «year» и агрегирования в окне.

from pyspark.sql.window import *

windowSpec = Window.partitionBy('lable','year')\
                   .rowsBetween(Window.unboundedPreceding, Window.unboundedFollowing)

df = df.withColumn("std", f.round(f.stddev("val").over(windowSpec), 2))
0
ответ дан Manoj Singh 19 January 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: