[3. 엑셀 대신 파이썬: 재고찾기 프로그램] 사용한 코드와 설명

Computer 관심/Pandas|2020. 7. 18. 18:24
반응형

[3. 엑셀 대신 파이썬: 재고찾기 프로그램] 사용한 코드와 설명

#!/usr/bin/env python
# coding: utf-8

# In[1]:

#판다스를 불러온다.
import pandas as pd


# In[2]:

# 데이터의 모든 row를 보이게 한다. 이 설정을 안하면 생략하고 보여줌.
pd.set_option('display.max_rows', None)


# In[3]:

# 불러올 파일을 명시함
file = 'INV_CurrentStock.csv'


# In[4]:

# csv파일을 판다스의 데이타프레임으로 변환하여 반환.
df_csv_data = pd.read_csv(file)


# In[5]:

# df_new_data에 칼럼 Location과 Quantity를 삭제한 데이터프레임을 넣음
df_new_data = df_csv_data.drop(columns=['Location', 'Quantity'])


# In[6]:

# drop_duplicates()를 사용해서 중복되는 열을 삭제 후 Item, Description, Category 칼럼만 남김
df_new_data = df_new_data.drop_duplicates().filter(['Item','Description','Category'])


# In[7]:


# print(df_new_data)


# In[8]:

# 로케이션 칼럼인 Warehouse 인 row의 인덱스를 반환 
is_warehouse = df_csv_data['Location']=='Warehouse'


# In[9]:

# 로케이션 칼럼인 Display 인 row의 인덱스를 반환 
is_display = df_csv_data['Location']=='Display'


# In[10]:

# df_csv_data[is_warehouse]를 사용하여 칼럼에 웨어하우스 라고 적힌 열들을 얻어내고
# 필요한 정보인 Item 과 Quantity만 보이게 한다.
warehouse_qty = df_csv_data[is_warehouse].filter(['Item','Quantity'])


# In[11]:

# df_csv_data[is_display]를 사용하여 칼럼에 디스플레이 라고 적힌 열들을 얻어내고
# 필요한 정보인 Item 과 Quantity만 보이게 한다.
display_qty = df_csv_data[is_display].filter(['Item','Quantity'])


# In[12]:


# print(warehouse_qty)


# In[13]:

#df_new_data와 arehouse_qty합치기
marged_warehouse= pd.merge(df_new_data, warehouse_qty, how='left', left_on=['Item'], right_on=['Item'])


# In[14]:

#marged_warehouse와 display_qty를 합치고 중복되는 칼럼 이름에 왼쪽 _warehouse 오른쪽 _display를 달아줌
marged_data=pd.merge(marged_warehouse, display_qty, how='left', left_on=['Item'], right_on=['Item'], suffixes=('_warehouse', '_display'))


# In[15]:

# 이렇게 합쳤을때 데이터가 없는quantity_warehouse칼럼과 qauntity_display칼럼에
# NA라고 나오는데 fillan를 통해 0으로 바꿔준다.
na_to_zero_data = marged_data.fillna(dict(Quantity_warehouse=0, Quantity_display=0))


# In[16]:

# 웨어하우스에는 0개 이상, 디스플레이는 0개인 제품을 확인한다.
data = na_to_zero_data.loc[(non_to_zero_data['Quantity_warehouse'] > 0) & (non_to_zero_data['Quantity_display'] == 0)]

print(data)
반응형

댓글()

[1. 엑셀 대신 파이썬: 재고찾기 프로그램] 주피터 설치 및 실행

Computer 관심/Pandas|2020. 7. 18. 18:20
반응형

매장을 관리할때 창고에 제고가 있음에도 불구하고 제품이 디스플레이가 되지 않는 경우가 있다.

 

제품명: 왕의 의자

디스플레이: 0

창고: 3

 

지금까지는 제고관리 프로그램에서 제공하는 엑셀 파일을 사용해서 디스플레이가 되지 않는 상품을 찾아내곤 했다.

'제품의 디스플레이가 0개 and 창고에 있는 수 >1' 를 찾으면 되는 것이다. 

 

1)

product_name display warehouse
왕의 의자 0 3

엑셀에 경우 필터를 사용하여 werehouse에 0만 제외 시키고 모두 체크하고 display는 0만 체크 해놓으면 디스플레이가 되지 않은 제품들을 찾아 낼 수 있다.

 

하지만 문제는 엑셀이 이렇게 제공 되는 경우이다.

 

2)

product_name location warehouse
왕의 의자 display 0
왕의 의자 warehouse 3

엑셀에선 sumifs를 사용해서 2번 모양의 테이블을 1번처럼 만들 수 있다. 하지만 제고를 체크 할 때 마다 이러한 일을 반복해야 한다는 것이 너무 번거로웠다.

 

그래서 엑셀 대신 파이썬 & 주피터 노트북를 사용하여 디스플레이가 가능한 제고를 찾아내 보려고 한다.

 

 

1. 주피터노트 설치하기

pip install notebook

파이썬을 설치한 뒤 커맨드창에 위와 같이 입력한다.

 

2. 폴더 만들기

 

3. 만든 폴더에 들어가서 파일 경로 창에 cmd 실행하기

 

4. 주피터 노트북 실행하기

jupyter notebook

실행하면 위와 같이 브라우저에서 주피터 노트북이 실행된다.

 

3. New를 클릭하여 Python 3 노트북을 실행시킨다.

4. 이제 In [ ] 옆의 필드에 코드를 입력을 해보자

 

반응형

댓글()