Простой способ эффективно фильтровать CSV-файл?

#python #csv

#python #csv

Вопрос:

Я пишу программу, которая будет фильтровать поля из MLB несколькими способами. (мячи, удары, тип подачи, удары, ауты и т. Д.) Есть ли более простой способ фильтрации, чем вручную записывать каждую ситуацию? Пример ниже:

 #any pitch type, specific 'c' and specific 'other'
elif b == 'ALL' and c != 'any' and other != 'any':
    if a == dtdy[z]:
        #print(number[z])
        ID = number[z]
        with open('atbats.csv','r') as csvfile:
            plots = csv.reader(csvfile, delimiter=',')
            next (plots)

            for row in plots:
                #if a > k :
                if  number[z] == row[8]:
                    pitcher_atbats.append(row[0])

        with open('pitches.csv','r') as csvfile:
            plots = csv.reader(csvfile, delimiter=',')
            next (plots)
            x = []
            y = []
            pitch= []
            h = int(0)
            for row in plots:
                if h == 3000:
                    break
                else:
                    #looks for the specific values in row[4] and row[22] and
                    #will append the x and y value to respective lists
                    if (row[0] in pitcher_atbats and row[4] == other
                        and row[22] == c):
                        x.append(float(row[20]))
                        y.append(float(row[21]))
                        pitch.append(row[19])
                        #sz_bot = (float(row[26]))
                        #sz_top = (float(row[27]))
                        #print(sz_bot)
                        #bot = bot   sz_bot
                        #top = top   sz_top
                        #print(bot)
                        #if pitcher_atbats[a] == row[0]:
                        h  =1
        graph(x,y, pitch)
    else:
        z  = 1
  

Могу ли я установить для переменных фильтра, таких как ‘c’, значение, которое не будет фильтроваться по ‘c’. В противном случае мне пришлось бы написать около 50 исключений. Извините, если это сбивает с толку, я не уверен, что не объясню это, но я знаю, что я хочу сделать.

На моем GitHub есть полный проект: https://github.com/almostBurtMacklin/GUIpitchFinder

Комментарии:

1. Используйте фрейм данных pandas — pandas.pydata.org

2. @PedroLobito как это мне поможет? Я получаю «фильтр» из поля со списком tkinter и буду отображать x и y с помощью matplotlib

3. Объектно-ориентированный способ сделать это состоял бы в том, чтобы определить абстрактное понятие «filter» is и operates, а затем реализовать эту абстракцию, определив a class Filter . Как только это будет сделано, его экземпляры для определенных видов фильтрации, которые вы хотите выполнить, могут быть созданы и применены к данным, которые вы хотите обработать.