Домашнее задание помочь в классификации строк имен столбцов, начинающихся с одинаковых трех букв и имеющих одинаковые значения в столбцах? - PullRequest
0 голосов
/ 05 февраля 2019

Новичок в программировании, нужна помощь в решении этой домашней задачи: рассмотрите все столбцы, имя которых начинается с «Cl» (Классификация, Кластеризация, и предположите, что может быть много других).Получить строки этих людей с одинаковым значением во всех столбцах «Cl».Например, вы должны вернуть человека с 4.0 во всех столбцах Cl или человека с 3.0 во всех столбцах Cl;но вы НЕ должны возвращать человека с 4.0 во всех столбцах Cl, кроме одного, где есть 3.0.Подсказка: начните с вычисления максимального и минимального значения в столбцах «Cl» для каждого учащегося.

Я не уверен, с чего начать с этой проблемой?Не могу понять, о чем идет речь?

Изображение примера набора данных: [1]: https://i.stack.imgur.com/xglFm.png

В кадре данных указан код:

 import pandas as pd
 df = pd.read_csv("cleaned_survey.csv", index_col=0)
 df.drop(['ProgSkills','Languages','Expert'],axis=1,inplace=True)  

1 Ответ

0 голосов
/ 05 февраля 2019

Генерирование некоторых фиктивных данных в соответствии с требованиями OP

import pandas as pd

a = [['Classification','Clustering','Top'],
        [8,7,5],
        [8,1333,3],
        [50,50,1],
        [50,3363,2],
        [50,50,3],
        [83,50,4],
        [83,83,5]]
df = pd.DataFrame(a[1:], columns=a[0])
print(df)

   Classification  Clustering  Top
0               8           7    5
1               8        1333    3
2              50          50    1
3              50        3363    2
4              50          50    3
5              83          50    4
6              83          83    5

Выбор столбцов по частичному имени столбца (возвращает 2 столбца) ( ссылка используется )

df = df[df.columns[df.columns.str.startswith('Cl')]]
print(df)

   Classification  Clustering
0               8           7
1               8        1333
2              50          50
3              50        3363
4              50          50
5              83          50
6              83          83

Наконец, используйте pandas .nunique(axis=1) метод , чтобы вернуть количество различных наблюдений по столбцам (в фиктивных данных, если оба столбца содержат одно и то же значение, возвращается 1).Затем сравните это с целым числом 1. Если эти 2 значения равны (для конкретной строки), то вы знаете, что число уникальных записей для этой строки равно 1, а логическая маска из ...eq(..) возвращает True ...Другими словами, эта строка содержит одинаковое значение для всех столбцов.Используя срез панд, только True строки возвращаются df = df[...], что задается в вопросе - используется ссылка .

print(df[df.nunique(axis=1).eq(1)])

   Classification  Clustering
2              50          50
4              50          50
6              83          83

Для использования min и max, см. эту ссылку - если минимальное и максимальное значения в каждой строке всех столбцов равны, то элементы идентичны по строкам, как требуется ( полезное сообщение об использовании apply по столбцам )

print(df[df.apply(lambda x: min(x)==max(x), 1)])

   Classification  Clustering
2              50          50
4              50          50
6              83          83
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...