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 [3]:
df1 = pd.read_csv('01_Contract_Data.csv')
df1
Out[3]:
Index | Member_ID | Sales_Type | Contract_Type | Channel | Datetime | Term | Payment_Type | Product_Type | Amount_Month | Customer_Type | Age | Address1 | Address2 | State | Overdue_count | Overdue_Type | Gender | Credit_Rank | Bank | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 66758234 | 렌탈 | 일반계약 | 영업방판 | 2019-05-06 | 60 | CMS | DES-1 | 96900 | 개인 | 42.0 | 경기도 | 경기도 | 계약확정 | 0 | 없음 | 여자 | 9.0 | 새마을금고 |
1 | 2 | 66755948 | 렌탈 | 교체계약 | 영업방판 | 2020-02-20 | 60 | 카드이체 | DES-1 | 102900 | 개인 | 39.0 | 경기도 | 경기도 | 계약확정 | 0 | 없음 | 남자 | 2.0 | 현대카드 |
2 | 3 | 66756657 | 렌탈 | 일반계약 | 홈쇼핑/방송 | 2019-02-28 | 60 | CMS | DES-1 | 96900 | 개인 | 48.0 | 경기도 | 경기도 | 계약확정 | 0 | 없음 | 여자 | 8.0 | 우리은행 |
3 | 4 | 66423450 | 멤버십 | 멤버십3유형 | 재계약 | 2019-05-13 | 12 | CMS | DES-1 | 66900 | 개인 | 39.0 | 경기도 | 경기도 | 계약확정 | 0 | 없음 | 남자 | 5.0 | 농협회원조합 |
4 | 5 | 66423204 | 멤버십 | 멤버십3유형 | 재계약 | 2019-05-10 | 12 | CMS | DES-1 | 66900 | 개인 | 60.0 | 경기도 | 경기도 | 기간만료 | 12 | 있음 | 남자 | 8.0 | 농협회원조합 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
51296 | 51298 | 66579515 | 렌탈 | 프로모션계약 | 대형마트A | 2019-03-01 | 60 | CMS | DES-3A | 96900 | 개인 | 47.0 | 경기도 | 경기도 | 계약확정 | 0 | 없음 | 남자 | NaN | 기업은행 |
51297 | 51299 | 66799558 | 렌탈 | 일반계약 | 대형마트A | 2019-04-01 | 60 | CMS | DES-1 | 96900 | 개인 | 42.0 | 경기도 | 경기도 | 계약확정 | 0 | 없음 | 여자 | 8.0 | 새마을금고 |
51298 | 51300 | 66799197 | 렌탈 | 프로모션계약 | 영업방판 | 2019-04-01 | 39 | 카드이체 | ERA | 120900 | 개인 | 65.0 | 서울특별시 | 서울특별시 | 계약확정 | 0 | 없음 | 여자 | 1.0 | 롯데카드 |
51299 | 51301 | 66792778 | 렌탈 | 일반계약 | 홈쇼핑/방송 | 2020-02-06 | 60 | 카드이체 | DES-1 | 96900 | 개인 | 54.0 | 서울특별시 | 서울특별시 | 계약확정 | 0 | 없음 | 여자 | 2.0 | 롯데카드 |
51300 | 51302 | 66799607 | 렌탈 | 일반계약 | 홈쇼핑/방송 | 2019-04-24 | 60 | CMS | DES-1 | 96900 | 개인 | 53.0 | 서울특별시 | 서울특별시 | 계약확정 | 0 | 없음 | 여자 | 8.0 | 신한은행 |
51301 rows × 20 columns
- 데이터의 구조를 확인하는 함수들은 보통 소괄호'()'가 붙지 않음
In [4]:
df1.columns #Dataframe Column명 확인
Out[4]:
Index(['Index', 'Member_ID', 'Sales_Type', 'Contract_Type', 'Channel', 'Datetime', 'Term', 'Payment_Type', 'Product_Type', 'Amount_Month', 'Customer_Type', 'Age', 'Address1', 'Address2', 'State', 'Overdue_count', 'Overdue_Type', 'Gender', 'Credit_Rank', 'Bank'], dtype='object')
In [5]:
df1.index #Dataframe 내 데이터의 순서 확인
Out[5]:
RangeIndex(start=0, stop=51301, step=1)
In [6]:
df1.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 51301 entries, 0 to 51300 Data columns (total 20 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Index 51301 non-null int64 1 Member_ID 51301 non-null int64 2 Sales_Type 51301 non-null object 3 Contract_Type 51301 non-null object 4 Channel 51301 non-null object 5 Datetime 51301 non-null object 6 Term 51301 non-null int64 7 Payment_Type 51301 non-null object 8 Product_Type 51301 non-null object 9 Amount_Month 51301 non-null int64 10 Customer_Type 51299 non-null object 11 Age 44329 non-null float64 12 Address1 51299 non-null object 13 Address2 51299 non-null object 14 State 51301 non-null object 15 Overdue_count 51301 non-null int64 16 Overdue_Type 51301 non-null object 17 Gender 51301 non-null object 18 Credit_Rank 42520 non-null float64 19 Bank 48542 non-null object dtypes: float64(2), int64(5), object(13) memory usage: 7.8+ MB
숫자 데이터 확인¶
- 평균 : 숫자 데이터의 대표값(중심값)을 확인
- 합 : 숫자 데이터의 전체 합 확인
In [7]:
df1['Term'] #Series 형태로 불러오기
Out[7]:
0 60 1 60 2 60 3 12 4 12 .. 51296 60 51297 60 51298 39 51299 60 51300 60 Name: Term, Length: 51301, dtype: int64
In [8]:
df1['Term'].mean().round(3) #평균값 확인
Out[8]:
55.639
In [9]:
df1['Amount_Month'].sum() #데이터의 합 확인
Out[9]:
4822036176
In [10]:
df1.describe() #Dataframe에 존재하는 숫자 데이터의 요약 통계량 확인
Out[10]:
Index | Member_ID | Term | Amount_Month | Age | Overdue_count | Credit_Rank | |
---|---|---|---|---|---|---|---|
count | 51301.000000 | 5.130100e+04 | 51301.000000 | 51301.000000 | 44329.000000 | 51301.000000 | 42520.000000 |
mean | 25651.703612 | 6.266432e+07 | 55.639149 | 93994.974289 | 50.024093 | 0.161381 | 3.428810 |
std | 14809.828628 | 1.216146e+07 | 12.009915 | 15304.263988 | 10.983877 | 1.122193 | 2.213453 |
min | 1.000000 | 2.568798e+07 | 12.000000 | 54603.000000 | 25.000000 | 0.000000 | 0.000000 |
25% | 12826.000000 | 6.643148e+07 | 60.000000 | 81900.000000 | 42.000000 | 0.000000 | 1.000000 |
50% | 25652.000000 | 6.676578e+07 | 60.000000 | 96900.000000 | 49.000000 | 0.000000 | 3.000000 |
75% | 38477.000000 | 6.678160e+07 | 60.000000 | 98400.000000 | 57.000000 | 0.000000 | 5.000000 |
max | 51302.000000 | 6.696986e+07 | 60.000000 | 215700.000000 | 102.000000 | 15.000000 | 10.000000 |
문자 데이터 확인¶
- 항목 / 빈도수
In [11]:
df1['Sales_Type']
Out[11]:
0 렌탈 1 렌탈 2 렌탈 3 멤버십 4 멤버십 ... 51296 렌탈 51297 렌탈 51298 렌탈 51299 렌탈 51300 렌탈 Name: Sales_Type, Length: 51301, dtype: object
In [12]:
df1['Sales_Type'].unique() #object 데이터의 구성 항목 확인
Out[12]:
array(['렌탈', '멤버십'], dtype=object)
In [13]:
df1['Bank'].unique()
Out[13]:
array(['새마을금고', '현대카드', '우리은행', '농협회원조합', '농협중앙회', '롯데카드', '신한은행', '국민카드', '부산은행', '우체국', '국민은행', '기업은행', 'SC제일은행', nan, '대구은행', '하나은행', '신한카드', '삼성카드', '광주은행', '외환은행', 'BC카드', '씨티은행', '신협중앙회', '경남은행', '미래에셋증권', '외환카드', '수협중앙회', '유안타증권', '전북은행', '상호저축은행', '대신증권', '산업은행', '현대증권', '산림조합중앙회', '제주은행', '삼성증권', '하나대투증권', 'SK증권', '수협카드', '한국투자증권', '신한금융투자', '하나SK', 'NH농협카드', '메리츠종합금융증권', '하이투자증권', '우리카드', '대우증권', '씨티카드'], dtype=object)
In [14]:
df1['Sales_Type'].value_counts() #object 데이터의 빈도수를 계산
Out[14]:
Sales_Type 렌탈 46483 멤버십 4818 Name: count, dtype: int64
In [15]:
df1['Bank'].value_counts(ascending= True)
Out[15]:
Bank 씨티카드 1 하이투자증권 1 메리츠종합금융증권 1 수협카드 1 SK증권 1 하나대투증권 1 산림조합중앙회 1 대신증권 1 상호저축은행 1 대우증권 2 우리카드 3 NH농협카드 4 신한금융투자 4 한국투자증권 4 미래에셋증권 5 하나SK 6 삼성증권 7 현대증권 11 산업은행 23 유안타증권 27 제주은행 40 수협중앙회 160 씨티은행 162 전북은행 195 신협중앙회 341 광주은행 347 SC제일은행 439 경남은행 442 외환카드 530 외환은행 586 우체국 718 대구은행 746 현대카드 876 삼성카드 884 부산은행 889 새마을금고 964 BC카드 1264 국민카드 1311 하나은행 1446 신한카드 1532 기업은행 1963 우리은행 3386 신한은행 3522 농협중앙회 3899 국민은행 6002 농협회원조합 6277 롯데카드 9516 Name: count, dtype: int64
In [16]:
df1.describe(include='object') #object 데이터의 요약 통계량
Out[16]:
Sales_Type | Contract_Type | Channel | Datetime | Payment_Type | Product_Type | Customer_Type | Address1 | Address2 | State | Overdue_Type | Gender | Bank | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 51301 | 51301 | 51301 | 51301 | 51301 | 51301 | 51299 | 51299 | 51299 | 51301 | 51301 | 51301 | 48542 |
unique | 2 | 9 | 16 | 577 | 5 | 6 | 2 | 8 | 14 | 4 | 2 | 2 | 47 |
top | 렌탈 | 프로모션계약 | 영업방판 | 2019-01-31 | CMS | DES-1 | 개인 | 경기도 | 경기도 | 계약확정 | 없음 | 여자 | 롯데카드 |
freq | 46483 | 15811 | 23767 | 1167 | 32825 | 39133 | 46263 | 18353 | 14883 | 50620 | 49110 | 35602 | 9516 |