In [1]:
import os
import numpy as np
import pandas as pd
In [2]:
os.getcwd() #현재 디렉토리 확인
Out[2]:
'/Users/limjongjun/Desktop/JayJay/Growth/Python/Class101_Pandas'
In [25]:
df3 = pd.read_csv('03_Delivery.csv', encoding= 'cp949') #한글 인코더 명칭 옵션 추가
df3
Out[25]:
결제수단 | 배송번호 | 배송시작일 | 배송완료일 | 상품구매금액 | 상품번호 | 수량 | 주문경로 | 주문일 | |
---|---|---|---|---|---|---|---|---|---|
0 | 무통장입금 | D-20181227-0000648-00 | 2019-01-07 오전 8:56 | 2019-01-11 오전 5:32 | 71450 | 1077.0 | 1 | PC쇼핑몰 | 20181227 |
1 | 무통장입금 | D-20181229-0000119-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 141240 | 42.0 | 2 | 모바일웹 | 20181229 |
2 | 무통장입금 | D-20181230-0000100-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 13910 | 1271.0 | 1 | 모바일웹 | 20181230 |
3 | 무통장입금 | D-20181231-0000087-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 81600 | 1085.0 | 1 | 모바일웹 | 20181231 |
4 | 무통장입금 | D-20181231-0000108-00 | 2019-01-07 오전 8:56 | 2019-01-11 오전 5:32 | 94710 | 1106.0 | 1 | 모바일웹 | 20181231 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
46744 | 카드 | D-20171229-0000036-00 | 2017-12-29 오후 4:32 | 2018-01-02 오전 5:31 | 52800 | 445.0 | 1 | 모바일웹 | 20171229 |
46745 | 카드 | D-20171229-0000043-00 | 2018-01-03 오전 9:45 | 2018-01-07 오전 5:38 | 112200 | 172.0 | 2 | 모바일웹 | 20171229 |
46746 | 카드 | D-20171230-0000022-01 | 2018-01-02 오후 7:06 | 2018-01-11 오전 2:46 | 36000 | 140.0 | 1 | 네이버 페이 | 20171230 |
46747 | 카드 | D-20171231-0000017-01 | 2018-01-03 오후 2:00 | 2018-01-06 오후 6:06 | 73460 | 184.0 | 1 | 네이버 페이 | 20171231 |
46748 | 카드 | D-20171231-0000026-00 | 2018-01-03 오후 12:43 | 2018-01-07 오전 5:38 | 81620 | 479.0 | 1 | 모바일웹 | 20171231 |
46749 rows × 9 columns
In [26]:
df3.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 46749 entries, 0 to 46748 Data columns (total 9 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 결제수단 46749 non-null object 1 배송번호 46749 non-null object 2 배송시작일 46749 non-null object 3 배송완료일 46749 non-null object 4 상품구매금액 46749 non-null int64 5 상품번호 46661 non-null float64 6 수량 46749 non-null int64 7 주문경로 46749 non-null object 8 주문일 46749 non-null int64 dtypes: float64(1), int64(3), object(5) memory usage: 3.2+ MB
In [27]:
df3.describe()
Out[27]:
상품구매금액 | 상품번호 | 수량 | 주문일 | |
---|---|---|---|---|
count | 4.674900e+04 | 46661.000000 | 46749.000000 | 4.674900e+04 |
mean | 6.936814e+04 | 891.675232 | 1.177073 | 2.018404e+07 |
std | 6.611247e+04 | 11339.533698 | 0.684482 | 5.192403e+03 |
min | 0.000000e+00 | 38.000000 | -1.000000 | 2.017010e+07 |
25% | 3.288000e+04 | 378.000000 | 1.000000 | 2.018073e+07 |
50% | 6.778000e+04 | 928.000000 | 1.000000 | 2.018112e+07 |
75% | 9.213000e+04 | 1209.000000 | 1.000000 | 2.019022e+07 |
max | 4.963400e+06 | 999999.000000 | 50.000000 | 2.019062e+07 |
In [28]:
#Dataframe 행 개수 세기
print(\
len(df3.loc[(df3['수량'] < 0)])
)
print(\
df3.loc[(df3['수량'] < 0)].shape[0]
)
16 16
In [29]:
df3.loc[(df3['수량'] < 0)].reset_index()
Out[29]:
index | 결제수단 | 배송번호 | 배송시작일 | 배송완료일 | 상품구매금액 | 상품번호 | 수량 | 주문경로 | 주문일 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 11 | 무통장입금 | D-20181231-0000205-01 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 107910 | 1059.0 | -1 | PC쇼핑몰 | 20181231 |
1 | 22 | 무통장입금 | D-20181231-0000635-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 78870 | 603.0 | -1 | PC쇼핑몰 | 20181231 |
2 | 97 | 카드 | D-20190102-0000193-00 | 2019-01-03 오전 9:28 | 2019-01-07 오전 5:32 | 78870 | 603.0 | -1 | 모바일웹 | 20190102 |
3 | 334 | 카드 | D-20190103-0000849-03 | 2019-01-07 오전 8:56 | 2019-01-11 오전 5:32 | 71450 | 1077.0 | -1 | 모바일웹 | 20190103 |
4 | 445 | 무통장입금 | D-20190104-0000596-01 | 2019-01-08 오전 8:43 | 2019-01-12 오전 5:32 | 124250 | 90.0 | -1 | 모바일웹 | 20190104 |
5 | 502 | 카드 | D-20190105-0000109-00 | 2019-01-08 오전 8:43 | 2019-01-12 오전 5:32 | 93720 | 1123.0 | -1 | PC쇼핑몰 | 20190105 |
6 | 583 | 적립금,카드 | D-20190107-0000092-00 | 2019-01-08 오전 8:43 | 2019-01-12 오전 5:32 | 75570 | 1069.0 | -1 | 모바일웹 | 20190107 |
7 | 898 | 적립금,무통장입금 | D-20190109-0000411-00 | 2019-01-10 오전 9:09 | 2019-01-14 오전 5:32 | 192000 | 1375.0 | -1 | PC쇼핑몰 | 20190109 |
8 | 970 | 무통장입금 | D-20190109-0000959-00 | 2019-01-11 오전 10:10 | 2019-01-15 오전 5:32 | 42350 | 1283.0 | -1 | PC쇼핑몰 | 20190109 |
9 | 1240 | 카드 | D-20190113-0000092-01 | 2019-01-15 오전 9:06 | 2019-01-19 오전 5:32 | 67320 | 1282.0 | -1 | PC쇼핑몰 | 20190113 |
10 | 1681 | 무통장입금 | D-20190116-0000511-00 | 2019-01-17 오전 9:54 | 2019-01-21 오전 5:32 | 70620 | 1275.0 | -1 | PC쇼핑몰 | 20190116 |
11 | 2014 | 무통장입금 | D-20190121-0000077-00 | 2019-01-22 오전 9:04 | 2019-01-26 오전 5:32 | 78210 | 397.0 | -1 | 모바일웹 | 20190121 |
12 | 2212 | 무통장입금 | D-20190122-0000426-00 | 2019-01-22 오후 6:18 | 2019-01-26 오전 5:32 | 83550 | 962.0 | -1 | PC쇼핑몰 | 20190122 |
13 | 2341 | 적립금,무통장입금 | D-20190123-0000529-01 | 2019-01-23 오후 6:50 | 2019-01-27 오전 5:32 | 126940 | 1373.0 | -1 | 모바일웹 | 20190123 |
14 | 2416 | 실시간계좌이체 | D-20190123-0001039-01 | 2019-01-24 오후 6:34 | 2019-02-02 오전 3:01 | 95110 | 1318.0 | -1 | 네이버 페이 | 20190123 |
15 | 2464 | 카드 | D-20190124-0000014-00 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 113520 | 445.0 | -1 | 모바일웹 | 20190124 |
In [30]:
#수량이 -1인 데이터 제거
df3.loc[(df3['수량'] >= 0)].describe()
Out[30]:
상품구매금액 | 상품번호 | 수량 | 주문일 | |
---|---|---|---|---|
count | 4.673300e+04 | 46645.000000 | 46733.000000 | 4.673300e+04 |
mean | 6.935979e+04 | 891.652353 | 1.177819 | 2.018404e+07 |
std | 6.611937e+04 | 11341.476028 | 0.683413 | 5.192197e+03 |
min | 0.000000e+00 | 38.000000 | 1.000000 | 2.017010e+07 |
25% | 3.246000e+04 | 378.000000 | 1.000000 | 2.018073e+07 |
50% | 6.778000e+04 | 928.000000 | 1.000000 | 2.018112e+07 |
75% | 9.213000e+04 | 1209.000000 | 1.000000 | 2.019022e+07 |
max | 4.963400e+06 | 999999.000000 | 50.000000 | 2.019062e+07 |
In [31]:
# 수량이 -1인 데이터를 1로 변환
# Step1
condition4 = (df3['수량'] < 0)
df3.loc[condition4, '수량(clean)'] = 1 #condition4를 충족시키는 행에 '수량(Clean)'이라는 필드에 1 할당
df3
Out[31]:
결제수단 | 배송번호 | 배송시작일 | 배송완료일 | 상품구매금액 | 상품번호 | 수량 | 주문경로 | 주문일 | 수량(clean) | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 무통장입금 | D-20181227-0000648-00 | 2019-01-07 오전 8:56 | 2019-01-11 오전 5:32 | 71450 | 1077.0 | 1 | PC쇼핑몰 | 20181227 | NaN |
1 | 무통장입금 | D-20181229-0000119-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 141240 | 42.0 | 2 | 모바일웹 | 20181229 | NaN |
2 | 무통장입금 | D-20181230-0000100-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 13910 | 1271.0 | 1 | 모바일웹 | 20181230 | NaN |
3 | 무통장입금 | D-20181231-0000087-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 81600 | 1085.0 | 1 | 모바일웹 | 20181231 | NaN |
4 | 무통장입금 | D-20181231-0000108-00 | 2019-01-07 오전 8:56 | 2019-01-11 오전 5:32 | 94710 | 1106.0 | 1 | 모바일웹 | 20181231 | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
46744 | 카드 | D-20171229-0000036-00 | 2017-12-29 오후 4:32 | 2018-01-02 오전 5:31 | 52800 | 445.0 | 1 | 모바일웹 | 20171229 | NaN |
46745 | 카드 | D-20171229-0000043-00 | 2018-01-03 오전 9:45 | 2018-01-07 오전 5:38 | 112200 | 172.0 | 2 | 모바일웹 | 20171229 | NaN |
46746 | 카드 | D-20171230-0000022-01 | 2018-01-02 오후 7:06 | 2018-01-11 오전 2:46 | 36000 | 140.0 | 1 | 네이버 페이 | 20171230 | NaN |
46747 | 카드 | D-20171231-0000017-01 | 2018-01-03 오후 2:00 | 2018-01-06 오후 6:06 | 73460 | 184.0 | 1 | 네이버 페이 | 20171231 | NaN |
46748 | 카드 | D-20171231-0000026-00 | 2018-01-03 오후 12:43 | 2018-01-07 오전 5:38 | 81620 | 479.0 | 1 | 모바일웹 | 20171231 | NaN |
46749 rows × 10 columns
In [32]:
# 수량이 -1인 데이터를 1로 변환
# Step2
condition4 = (df3['수량'] < 0)
df3['수량(clean)'] = df3['수량'] #'수량(Clean)' 컬럼에 '수량'값 복제
df3.loc[condition4, '수량(clean)'] = 1 #condition4를 충족시키는 행에 '수량(Clean)'이라는 필드에 1 할당
df3
Out[32]:
결제수단 | 배송번호 | 배송시작일 | 배송완료일 | 상품구매금액 | 상품번호 | 수량 | 주문경로 | 주문일 | 수량(clean) | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 무통장입금 | D-20181227-0000648-00 | 2019-01-07 오전 8:56 | 2019-01-11 오전 5:32 | 71450 | 1077.0 | 1 | PC쇼핑몰 | 20181227 | 1 |
1 | 무통장입금 | D-20181229-0000119-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 141240 | 42.0 | 2 | 모바일웹 | 20181229 | 2 |
2 | 무통장입금 | D-20181230-0000100-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 13910 | 1271.0 | 1 | 모바일웹 | 20181230 | 1 |
3 | 무통장입금 | D-20181231-0000087-00 | 2019-01-03 오전 9:30 | 2019-01-07 오전 5:32 | 81600 | 1085.0 | 1 | 모바일웹 | 20181231 | 1 |
4 | 무통장입금 | D-20181231-0000108-00 | 2019-01-07 오전 8:56 | 2019-01-11 오전 5:32 | 94710 | 1106.0 | 1 | 모바일웹 | 20181231 | 1 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
46744 | 카드 | D-20171229-0000036-00 | 2017-12-29 오후 4:32 | 2018-01-02 오전 5:31 | 52800 | 445.0 | 1 | 모바일웹 | 20171229 | 1 |
46745 | 카드 | D-20171229-0000043-00 | 2018-01-03 오전 9:45 | 2018-01-07 오전 5:38 | 112200 | 172.0 | 2 | 모바일웹 | 20171229 | 2 |
46746 | 카드 | D-20171230-0000022-01 | 2018-01-02 오후 7:06 | 2018-01-11 오전 2:46 | 36000 | 140.0 | 1 | 네이버 페이 | 20171230 | 1 |
46747 | 카드 | D-20171231-0000017-01 | 2018-01-03 오후 2:00 | 2018-01-06 오후 6:06 | 73460 | 184.0 | 1 | 네이버 페이 | 20171231 | 1 |
46748 | 카드 | D-20171231-0000026-00 | 2018-01-03 오후 12:43 | 2018-01-07 오전 5:38 | 81620 | 479.0 | 1 | 모바일웹 | 20171231 | 1 |
46749 rows × 10 columns
In [ ]:
df3.describe()
Out[ ]:
상품구매금액 | 상품번호 | 수량 | 주문일 | 수량(clean) | |
---|---|---|---|---|---|
count | 4.674900e+04 | 46661.000000 | 46749.000000 | 4.674900e+04 | 46749.000000 |
mean | 6.936814e+04 | 891.675232 | 1.177073 | 2.018404e+07 | 1.177758 |
std | 6.611247e+04 | 11339.533698 | 0.684482 | 5.192403e+03 | 0.683304 |
min | 0.000000e+00 | 38.000000 | -1.000000 | 2.017010e+07 | 1.000000 |
25% | 3.288000e+04 | 378.000000 | 1.000000 | 2.018073e+07 | 1.000000 |
50% | 6.778000e+04 | 928.000000 | 1.000000 | 2.018112e+07 | 1.000000 |
75% | 9.213000e+04 | 1209.000000 | 1.000000 | 2.019022e+07 | 1.000000 |
max | 4.963400e+06 | 999999.000000 | 50.000000 | 2.019062e+07 | 50.000000 |
In [ ]:
condition5 = (df3['상품번호'] == 999999)
df3.loc[condition5]
Out[ ]:
결제수단 | 배송번호 | 배송시작일 | 배송완료일 | 상품구매금액 | 상품번호 | 수량 | 주문경로 | 주문일 | 수량(clean) | |
---|---|---|---|---|---|---|---|---|---|---|
2521 | 카드 | D-20190124-0000418-01 | 2019-01-24 오후 6:34 | 2019-02-02 오전 6:30 | 78870 | 999999.0 | 1 | 네이버 페이 | 20190124 | 1 |
2524 | 무통장입금 | D-20190124-0000435-01 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 75240 | 999999.0 | 1 | PC쇼핑몰 | 20190124 | 1 |
2526 | 무통장입금 | D-20190124-0000440-00 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 124250 | 999999.0 | 1 | PC쇼핑몰 | 20190124 | 1 |
2528 | 무통장입금 | D-20190124-0000456-01 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 11660 | 999999.0 | 1 | PC쇼핑몰 | 20190124 | 1 |
2529 | 무통장입금 | D-20190124-0000456-02 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 60280 | 999999.0 | 1 | PC쇼핑몰 | 20190124 | 1 |
2531 | 카드 | D-20190124-0000471-01 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 75600 | 999999.0 | 3 | 모바일웹 | 20190124 | 3 |
In [ ]:
df3['상품번호(clean)'] = df3['상품번호'] #'상품번호(Clean)' 컬럼에 '상품번호'값 복제
condition5 = (df3['상품번호(clean)'] == 999999)
df3.loc[condition5, '상품번호(clean)'] = np.nan #상품번호가 999999인 데이터를 NaN으로 변경
condition6 = (df3['상품번호(clean)'].isnull()) #조건 할당
df3.loc[condition6] #NaN으로 처리한 데이터 확인
Out[ ]:
결제수단 | 배송번호 | 배송시작일 | 배송완료일 | 상품구매금액 | 상품번호 | 수량 | 주문경로 | 주문일 | 상품번호(clean) | |
---|---|---|---|---|---|---|---|---|---|---|
2521 | 카드 | D-20190124-0000418-01 | 2019-01-24 오후 6:34 | 2019-02-02 오전 6:30 | 78870 | 999999.0 | 1 | 네이버 페이 | 20190124 | NaN |
2524 | 무통장입금 | D-20190124-0000435-01 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 75240 | 999999.0 | 1 | PC쇼핑몰 | 20190124 | NaN |
2526 | 무통장입금 | D-20190124-0000440-00 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 124250 | 999999.0 | 1 | PC쇼핑몰 | 20190124 | NaN |
2528 | 무통장입금 | D-20190124-0000456-01 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 11660 | 999999.0 | 1 | PC쇼핑몰 | 20190124 | NaN |
2529 | 무통장입금 | D-20190124-0000456-02 | 2019-01-24 오후 6:32 | 2019-01-28 오전 5:32 | 60280 | 999999.0 | 1 | PC쇼핑몰 | 20190124 | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
45416 | 카드 | D-20170605-0000056-00 | 2017-06-07 오후 4:19 | 2017-06-13 오전 5:42 | 12030 | NaN | 1 | 모바일웹 | 20170605 | NaN |
45417 | 카드 | D-20170606-0000010-00 | 2017-06-07 오후 4:19 | 2017-06-13 오전 5:42 | 66500 | NaN | 1 | PC쇼핑몰 | 20170606 | NaN |
45418 | 카드 | D-20170606-0000026-01 | 2017-06-07 오후 4:21 | 2017-06-13 오전 11:58 | 12030 | NaN | 1 | 네이버 페이 | 20170606 | NaN |
45421 | 적립금,무통장입금 | D-20170607-0000018-00 | 2017-06-07 오후 4:19 | 2017-06-13 오전 5:42 | 64800 | NaN | 1 | PC쇼핑몰 | 20170607 | NaN |
45422 | 무통장입금 | D-20170607-0000031-00 | 2017-06-07 오후 4:19 | 2017-06-13 오전 5:42 | 44000 | NaN | 1 | PC쇼핑몰 | 20170607 | NaN |
94 rows × 10 columns