Подсчитывать и сравнивать вхождения в разных столбцах разных таблиц - PullRequest
2 голосов
/ 25 марта 2019

Я хотел бы знать (в Python), как подсчитывать вхождения и сравнивать значения из разных столбцов в разных электронных таблицах. После подсчета мне нужно знать, удовлетворяют ли эти значения условию, т. Е. Если Ана (пользователь) из первой электронной таблицы появляется 1 раз во второй таблице и 5 раз в третьей, я бы хотел суммировать 1 с переменной X.

Я новичок в Python, но я попытался получить .values ​​() после использования счетчика из коллекций. Однако я не уверен, учитывается ли реальное значение Ana при итерации в результатах счетчика. В общем, мне нужно перебрать каждый элемент в первой электронной таблице и посмотреть, появится ли каждый его элемент один раз во второй электронной таблице и пять раз в третьей электронной таблице, если такое случится, переменная X будет добавлена ​​на единицу.

def XInputOutputs ():

list1 = []
with open(file1, 'r') as fr:
    r = csv.reader(fr)
    for row in r:
        list1.append(row[1])
    number_of_occurrences_in_list_1 = Counter(list1)
    list1_ocurrences = number_of_occurrences_in_list_1.values()

list2 = []
with open(file2, 'r') as fr:
    r = csv.reader(fr)
    for row in r:
        list2.append(row[1])
    number_of_occurrences_in_list_2 = Counter(list2)
    list2_ocurrences = number_of_occurrences_in_list_2.values()

X = 0

for x,y in zip(list1_ocurrences, list2_ocurrences):
    if x == 1 and y == 5:
        X += 1

return X

Я тестировал с небольшими электронными таблицами, но это работает только для предварительно упорядоченных значений. Если Ана появляется после 100000 строк, все сломано. Я думаю, что необходимо повторять каждое значение (Ana) и проверять одновременно во всех электронных таблицах и суммировать переменную X.

1 Ответ

0 голосов
/ 25 марта 2019

Я на работе, поэтому полный ответ смогу написать только позже.Если вы можете импортировать модули, я предлагаю вам попробовать использовать pandas: настоящий супер-полезный инструмент для быстрого и эффективного управления фреймами данных.Вы можете легко импортировать таблицу .csv с помощью метода

import pandas as pd

df = pd.read_csv() 

, а затем выполнить практически любую операцию.

Проверьте этот ответ: у меня мало времени, чтобы прочитать его, но янадеюсь, что это поможет

Какой самый эффективный способ подсчета событий в пандах?

ОБНОВЛЕНИЕ: затем попробуйте с этим

# not tested but should work

import os
import pandas as pd

# read all csv sheets from folder - I assume your folder is named "CSVs"
for files in os.walk("CSVs"):
    files = files[-1]
# here it's generated a list of dataframes
df_list = []
for file in files:
    df = pd.read_csv("CSVs/" + file)
    df_list.append(df)

name_i_wanna_count = "" # this will be your query
columun_name = "" # here insert the column you wanna analyze
count = 0

for df in df_list:
    # retrieve a series matching your query and then counts the elements inside
    matching_serie = df.loc[df[columun_name] == name_i_wanna_count]
    partial_count = len(matching_serie)
    count = count + partial_count

print(count)

Я надеюсьэто помогает

...