직장인의 결심은 바람앞의 촛불같달까요?
매일 혹은 2일에 한번이라도 하려고 마음 먹었으나 생각만큼 쉽지는 않습니다ㅠ
무사히 완주할 수 있기를 빌면서 시작해 보겠습니다.
일단 기초적으로 jupyter를 사용하여 진행할 예정입니다.
직장내 보안으로 인해 불가하신 분들은 colab으로 대체하셔도 되구요, 폐쇄회로? 이신 분들은 별도의 설치 방법이 있다고 알고 있는데 이전에 했던 것이라 기억이 나질 않아.. 구글링 추천드립니다.
아래의 내용은 파일의 내용과 동일합니다.
파일이 필요하신 분들은 댓글남겨주시면 드리겠습니다!
추가로 jupyter에 대해 간단하게 정리된 글이 필요하시면 참조 하셔도 좋을 것 같습니다! ㅎㅎ
2022.06.08 - [데이터 분석/기초 조작 및 활용] - Jupyter notebook 기초 조작 및 단축키
01 기초 데이터 조작¶
데이터 불러오기 및 살펴보기¶
import pandas as pd
data_path = 'https://raw.githubusercontent.com/zero-bacteria/BBG_Study/master/sample_data/shipping_data.csv'
df = pd.read_csv(data_path, encoding='cp949')
df
product_code | pol | pod | shipping_date | rev | currency | |
---|---|---|---|---|---|---|
0 | PK99 | 인천 | VN | 2023-07-31 20:21 | 27599 | USD |
1 | AB12 | 부산 | VN | 2023-10-08 15:23 | 29664 | USD |
2 | WP50 | 인천 | TW | 2023-01-13 8:01 | 20372 | USD |
3 | PK99 | 부산 | JP | 2023-10-30 19:44 | 43310 | USD |
4 | CA30 | 인천 | VN | 2023-05-03 17:58 | 38521 | USD |
... | ... | ... | ... | ... | ... | ... |
195 | PK99 | 부산 | TW | 2023-05-01 19:59 | 33543 | USD |
196 | PK99 | 부산 | JP | 2023-08-16 11:28 | 23101 | USD |
197 | CA30 | 인천 | JP | 2023-10-22 3:39 | 45426 | USD |
198 | PK99 | 인천 | CN | NaN | 14349 | USD |
199 | PK99 | 인천 | TW | 2023-09-23 10:56 | 17256 | USD |
200 rows × 6 columns
이번 데이터는 제가 직접 작성한 데이터로 회사에서 있을법한? 데이터를 생성하여 보았습니다.
회사에서 상품을 판매한다고 가정하고 상품코드, 출발지, 도착지, 선적날짜, 금액, 통화 로 구성하였습니다. 모두 임의의 값으로 설정하여 제작하였으며 첫단계인 만큼 작은 데이터로 제작하였습니다.
제가 일을하면서 쓸 수 있었던 부분, 혹은 실무를 보는 것 처럼 위장(업무를 보는것 같은...) 할 수 있을거라고 생각합니다. 해당 데이터를 이용하여 실습해보시고 직접 회사에서도 활용하실 수 있도록 진행해볼 예정입니다.
데이터 경로를 설정해서 데이터를 불러 올 수 있습니다. pd.read_excel 또는 pd.read_csv를 통해서 .xlsx의 엑셀파일 .csv의 csv파일을 불러 올 수 있습니다.
추가적으로 컴퓨터에 있는 데이터를 불러오고자 하는 경우
- 현재폴더 : '/파일이름.xlsx'의 형식으로 넣을 수 있다.
- encoding의 경우 한글이 포함된 파일이면 encoding='cp949' 추가해 주고 그렇지 않은 경우는 그냥 해도 무방하다
혹시 사내에 엑셀 자동 암호화가 걸려있는 경우가 있습니다.(저도.....)
이런 경우에는 csv로 다른이름 저장 하신 후 사용하시면 됩니다!
df2 = pd.read_excel('./test.xlsx') # 현재 폴더에 test.xlsx를 만들어 놓으면 된다.
간단한 명령어를 통해서 데이터를 살펴 볼 수 있다.
.shape
: 행과 열이 몇개인 지 알 수 있다..info()
: 데이터의 정보 행 열의 정보등을 알려준다..describe()
: 데이터의 통계적 지표등을 데이터 프레임 형태로 출력하여 준다.
print(df.shape)
print('행 개수: ', df.shape[0])
print('열 개수: ', df.shape[1])
(200, 6)
행 개수: 200
열 개수: 6
print(df.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 product_code 200 non-null object
1 pol 197 non-null object
2 pod 200 non-null object
3 shipping_date 194 non-null object
4 rev 200 non-null int64
5 currency 200 non-null object
dtypes: int64(1), object(5)
memory usage: 9.5+ KB
None
print(df.describe())
rev
count 200.000000
mean 31277.990000
std 11358.143856
min 10283.000000
25% 22063.750000
50% 31779.500000
75% 41801.000000
max 49781.000000
.head()
/ .tail()
을 통해 제일 상단/하단의 데이터들을 조회 할 수 있습니다.
괄호안에 숫자를 입력하면 원하는 만큼 출력이 됩니다
print(df.head())
product_code pol pod shipping_date rev currency
0 PK99 인천 VN 2023-07-31 20:21 27599 USD
1 AB12 부산 VN 2023-10-08 15:23 29664 USD
2 WP50 인천 TW 2023-01-13 8:01 20372 USD
3 PK99 부산 JP 2023-10-30 19:44 43310 USD
4 CA30 인천 VN 2023-05-03 17:58 38521 USD
데이터 조회하기¶
데이터를 조회하는 방법은 여러가지가 있습니다. 각각의 작동하시는 방식은 조금씩 다를 수 있으나 일단은 넘어가는 걸로...
df.columns
Index(['product_code', 'pol', 'pod', 'shipping_date', 'rev', 'currency'], dtype='object')
데이터 열을 확인하면 다음과 같은 컬럼들을 확인 할 수 있습니다. 그중 상품코드를 조회해보겠습니다.
띄어쓰기나 특수문자가 없는경우 .
을 사용해서 조회할 수 있습니다.
df.product_code
0 PK99
1 AB12
2 WP50
3 PK99
4 CA30
...
195 PK99
196 PK99
197 CA30
198 PK99
199 PK99
Name: product_code, Length: 200, dtype: object
[]
를 통해서 조회 할 수 있으며, ''
안에 컬럼 이름을 적어주면 조회가 가능합니다. 특수문자나 띄어쓰기가 있는 경우 이렇게 조회하면 되겠죠?
df['product_code']
0 PK99
1 AB12
2 WP50
3 PK99
4 CA30
...
195 PK99
196 PK99
197 CA30
198 PK99
199 PK99
Name: product_code, Length: 200, dtype: object
.loc
를 통해서 단순 열 뿐만 아닌 행까지 설정하여 조회 할 수 있습니다.
- [행,열]의 형태로 조회를 합니다.
:
의 경우 전체를 뜻합니다.
따라서 상품코드 전체를 등록하여 보면
df.loc[:,'product_code']
0 PK99
1 AB12
2 WP50
3 PK99
4 CA30
...
195 PK99
196 PK99
197 CA30
198 PK99
199 PK99
Name: product_code, Length: 200, dtype: object
조건에 따른 행 종류의 경우 추후 다시한번 다룰 예정입니다.
iloc의 경우 숫자를 통해서 조회 할 수 있습니다. 각각 행 열의 번호를 넣는다고 생각하시면 됩니다!
전체를 조회하면
df.iloc[:,1]
0 인천
1 부산
2 인천
3 부산
4 인천
..
195 부산
196 부산
197 인천
198 인천
199 인천
Name: pol, Length: 200, dtype: object
가장 첫번째 데이터를 조회한다면?
df.iloc[0,1]
'인천'
추가로 인덱스를 조회 할 수 있는데 다음과 같습니다.
df.index
RangeIndex(start=0, stop=200, step=1)
각각의 고유한 값들 즉, 해당 열에 존재하는 모든 데이터를 중복없이 보고싶다면, .unique()
를 사용하시면 됩니다.
df.product_code.unique()
array(['PK99', 'AB12', 'WP50', 'CA30'], dtype=object)
추가로 각각의 값들이 몇개나 있는지 .value_counts()
를 통해 확인 할 수 있습니다.
df.product_code.value_counts()
CA30 55
WP50 51
AB12 48
PK99 46
Name: product_code, dtype: int64
엑셀 필터기능을 직접 코드를 통해서 한다고 생각하시면 이해가 빠르실 겁니다.
초반에는 어색하겠지만 하다보면 편한 점도 많은 것 같습니다. 간단한 예시와 함께 마치겠습니다!
부장님 : OO야 우리 올해 상품 뭐뭐 나갔지?
df.product_code.value_counts()
CA30 55
WP50 51
AB12 48
PK99 46
Name: product_code, dtype: int64
올해 네가지 상품이 이정도 나갔네요!
'데이터 분석 > 빅분기' 카테고리의 다른 글
빅분기 실기 준비 - (2) 데이터 필터링 하기 1 (0) | 2023.11.20 |
---|---|
빅분기 실기 준비 - (0) INTRO (1) | 2023.10.30 |