Файл CSV: как я могу подсчитать вхождения значения на основе другого значения столбца с python? - PullRequest
0 голосов
/ 29 января 2020

У меня есть файл .csv (600 строк) с некоторым полем: идентификатор фиксации, тип запаха и т. Д.

Я бы посчитал вхождения каждого типа запаха для каждого идентификатора фиксации.

пример вывода я буду:

   commit dfbu3u4498fbbefi: [dense structure :1, cyclic dependency:4, unstable dependency: 67, feature concentration: 6, god component: 8]
  commit  bifueifyuwefbvwr: [dense structure :34, cyclic dependency:43, unstable dependency: 97, feature concentration: 43, god component: 10]

Я пытался с этим, но я думаю, что мне нужен еще один * oop (может быть?) Извините, я никогда не использовал Python до

import csv
import collections

smell = collections.Counter()


with open('Ref.csv') as file:
    reader = csv.reader(file, delimiter=';')

    for row in reader:

        smell[row[0]] += 1

print (smell.most_common(5))

OUTPUT:

[('9b0dd5dc979bd490ae34f6d790c466b47c84c920', 96), ('6431099fe7d5d90da678a78051f12894da82c68d', 96), ('44fdfa7ea93c15bb116a25e0675d98469deafaa6', 96), ('b2c40612a2c60685555f35af71f5801391a58b4b', 96), ('aa6cbb78cca17a9de339b2d060c00352e8beedde', 96)]

or if i change row index to 2 i got

[('Unstable Dependency', 315), ('Feature Concentration', 238), ('God Component', 84), ('Cyclic Dependency', 28), ('Dense Structure', 7)]

1 Ответ

0 голосов
/ 29 января 2020

Вы можете использовать pandas, чтобы сделать это:

import pandas as pd

# Dataframe definition
df = pd.read_csv('Ref.csv', sep=';')

# Group and get the count values.

df_grouped = df.groupby(by=['commit', 'smell']).size()

df_grouped теперь pandas.series, если вы хотите, чтобы оно снова было dataframe, вы должны сделать это:

df_grouped = df_grouped.reset_index()
df_grouped = df_grouped.rename(columns={0: "counts"})

Я настоятельно рекомендую вам ознакомиться с документацией: https://pandas.pydata.org/pandas-docs/stable/index.html

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