Использование Python для анализа розничных данных. Попытка получить все заказы, содержащие определенный артикул и хотя бы один другой артикул.

Я новичок в Python, который работает с большим CSV-файлом данных онлайн-заказа.

Я пытаюсь выяснить, какие артикулы люди чаще всего покупают с определенным артикулом, назовем его grey-shirt711.

Я изо всех сил пытаюсь выразить, как сказать «показать все заказы, которые содержат grey-shirt771 и хотя бы еще один артикул». Я просто извлекаю все заказы, в которых есть grey-shirt711, и в 90% случаев это только этот артикул.

Предполагая, что я имею дело только с этими двумя столбцами («sku» и «orderID»), как проще всего выразить это утверждение?

Благодарю вас!


person Joe H    schedule 25.01.2018    source источник
comment
Можешь поделиться фрагментом кода? Что у вас есть до сих пор?   -  person ncke    schedule 26.01.2018


Ответы (1)


Мы хотели бы помочь, но вам нужно быть немного более конкретным. Можете ли вы привести пример того, что вы пробовали. Можете ли вы показать нам, как вы читаете данные? Как предлагает Борис, вы, вероятно, захотите сделать это с помощью Pandas. Вот фрагмент, который будет фильтровать фрейм данных в столбце по вашему выбору:

import pandas as pd
import numpy as np

d = {'col1': [1, 2], 'col2': [3, 4]} # Should be your data import line...
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(100, 2)),
                   columns=['sku','orderID'])

#%% Alternatively, load your data using Pandas by uncommenting the lines below
# df = pd.read_excel('path_to_your_file') #If using excel

# Method 1
filter1 = 6 #replace 6 with grey-shirt771
filter2 = 3 # replace this with another sku of interest
df_items_of_interest1 = df[(df['sku'] == filter1) | (df['sku'] == filter2)]

# Method 2
filter1 = 'sku == 6'
filter2 = 'sku == 3'
df_items_of_interest2 = df.query(filter1 + '|' + filter2)

# Method 3
df_items_of_interest3 = df[df['sku'].isin([6,3])]

Обратитесь к этому SO Post и документацию Pandas для ясности.

Надеюсь, это поможет. От имени сообщества Stack Overflow я говорю добро пожаловать. Чтобы получить максимальную пользу от использования этого сайта (и помочь нам помочь вам), попробуйте некоторые из эти советы

person zelusp    schedule 25.01.2018
comment
Благодарю вас! Я знаю, что трудно дать много советов, не будучи более конкретным. Я просто пробовал случайные вещи (т.е. угадывал), поэтому я не знаю, поможет ли обмен? Я пытаюсь использовать вышеуказанные методы, и то, что я продолжаю получать в качестве вывода, - это всего лишь один sku или другой. Например: filter1 = 'синяя рубашка' filter2 = 'белые носки' df_items_of_interest1 = df[(df['sku'] == filter1) | (df['sku'] == filter2)] возвращает заказы, в которых есть либо синяя рубашка, либо белые носки, но я хочу видеть заказы, в которых есть синяя рубашка И белые носки. Наверное, я что-то упускаю. - person Joe H; 27.01.2018
comment
Если ваши элементы sku находятся в разных строках, как показано на рисунке, вам придется перенаправить заполнение столбца orderID (похоже, в нем отсутствуют данные). Вы можете сделать это с помощью df['sku'] = df['sku'].ffill(). Подробнее см. здесь. Затем вы можете группировать orderID. Наконец, отфильтруйте двойное условное выражение чем-нибудь например это - person zelusp; 28.01.2018
comment
Если мой пост помог вам, пожалуйста, покажите свою признательность, проголосовав за него :) - person zelusp; 28.01.2018