Count Distinct в типах данных pyspark - PullRequest
0 голосов
/ 16 октября 2019

Мне нужна функция для получения чего-то подобного в фрейме данных Pypspark:

Типы переменных:

Числовые: 4 Категориальные: 4 Дата: 1

1 Ответ

1 голос
/ 16 октября 2019

Давайте создадим фиктивный фрейм данных в нашей оболочке Pyspark

>>> rdd = sc.parallelize([['x',1,'y',2,1.1]])

>>> df = spark.createDataFrame(rdd, schema=['Col1','Col2','Col3','Col4','Col5'])

Вот типы столбцов для df

>>> df DataFrame[Col1: string, Col2: bigint, Col3: string, Col4: bigint, Col5: double]

Согласно документации, если вы используете атрибут dtypes в Spark DataFrame, https://spark.apache.org/docs/2.3.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.dtypes вы получите «все имена столбцов и их типы данных в виде списка»

>>> print(df.dtypes) [('Col1', 'string'), ('Col2', 'bigint'), ('Col3', 'string'), ('Col4', 'bigint'), ('Col5', 'double')]

Теперь вы можете использовать собственную библиотеку счетчиков Python, чтобы получить желаемый результат

>>> from Collections import Counter

>>> data_types = df.dtypes

>>> dict(Counter(dict(data_types).values())) {'string': 2, 'bigint': 2, 'double': 1}

Вы легко сможете преобразовать эти две строки в функцию, которая соответствует вашим конечным требованиям

Надеюсь, это поможет!

...