3 분 소요

경로(상대경로 / 절대경로)

절대경로

  • 환경에 상관없이 고정된 위치를 표현

상대경로

  • 환경에 따라 주소가 바뀌는 구조

  • ex)

    • 현재 디렉토리 : ./

    • 상위 : ../

    • 하위 : ./폴더명

    • 상위에서 상위 : ../../

import pandas as pd
import matplotlib.pyplot as plt
# 상위 폴더에 있는 csv 폴더에서 sales records.csv파일을 로드
# pandas read_csv() 함수를 이용
df = pd.read_csv("../csv/Sales Records.csv")

1.1 결측치 확인

isna()

  • 결측치가 있으면 true, 아니면 false 반환

isna().sum()

  • 결측치의 갯수를 카운트
df.isna().sum()
Region            0
Country           0
Item Type         0
Sales Channel     0
Order Priority    0
Order Date        0
Order ID          0
Ship Date         0
Units Sold        0
Unit Price        0
Unit Cost         0
Total Revenue     0
Total Cost        0
Total Profit      0
dtype: int64

1.2 통계 요약 정보

decribe()

  • DataFrame의 통계요약 정보 출력

  • 데이터의 개수, 평균값, 표준편차, 최솟값, 최대값, 1사분위, 중앙값, 3사분위 값

  • 데이터의 형태가 숫자의 형태여야 출력

df.describe()
Order ID Units Sold Unit Price Unit Cost Total Revenue Total Cost Total Profit
count 1.000000e+04 10000.000000 10000.000000 10000.000000 1.000000e+04 1.000000e+04 1.000000e+04
mean 5.498719e+08 5002.855900 268.143139 188.806639 1.333355e+06 9.382658e+05 3.950893e+05
std 2.607835e+08 2873.246454 217.944092 176.445907 1.465026e+06 1.145914e+06 3.775550e+05
min 1.000892e+08 2.000000 9.330000 6.920000 1.679400e+02 1.245600e+02 4.338000e+01
25% 3.218067e+08 2530.750000 109.280000 56.670000 2.885511e+05 1.647855e+05 9.832914e+04
50% 5.485663e+08 4962.000000 205.700000 117.110000 8.000512e+05 4.816058e+05 2.890990e+05
75% 7.759981e+08 7472.000000 437.200000 364.690000 1.819143e+06 1.183822e+06 5.664227e+05
max 9.999342e+08 10000.000000 668.270000 524.960000 6.680027e+06 5.241726e+06 1.738178e+06

1.3 컬럼명 변경

[데이터프레임명].columns

  • 데이터프레임 컬럼을 리스트의 형태로 출력

  • 이 값을 변경 시켜주면 컬럼의 이름이 변경

  • .columns() 처럼 괄호 넣으면 x

df.columns
Index(['Region', 'Country', 'Item Type', 'Sales Channel', 'Order Priority',
       'Order Date', 'Order ID', 'Ship Date', 'Units Sold', 'Unit Price',
       'Unit Cost', 'Total Revenue', 'Total Cost', 'Total Profit'],
      dtype='object')
df.columns = ["권역", "국가", "상품종류", "판매채널", "우선순위", "주문일자",
            "주문ID", "발송일자", "판매단위", "단가", "원가", "총수익", "총비용", "총비윤"]
df.head(1)
권역 국가 상품종류 판매채널 우선순위 주문일자 주문ID 발송일자 판매단위 단가 원가 총수익 총비용 총비윤
0 Sub-Saharan Africa Chad Office Supplies Online L 1/27/2011 292494523 2/12/2011 4484 651.21 524.96 2920025.64 2353920.64 566105.0

1.4 시계열 데이터 변경(datatime)

to_datetime()

  • pandas에 내장되어있는 to_datetime()

  • to_datetime(데이터의 값, format=”데이터의 구조”)

  • 형식에 맞춰진 자료라면 format 안써도 됨

df["주문일자"] = pd.to_datetime(df["주문일자"])
df["주문일자"]
0      2011-01-27
1      2015-12-28
2      2011-01-13
3      2012-09-11
4      2015-10-27
          ...    
9995   2014-07-15
9996   2012-10-27
9997   2013-02-14
9998   2017-02-19
9999   2016-04-12
Name: 주문일자, Length: 10000, dtype: datetime64[ns]

1.5 정렬

sort_values

  • 데이터프레임의 정렬(오름차순, 내림차순)

  • sort_values(정렬을 변경할 컬럼의 이름, ascending = bool)

  • ascending 속성에서 True : 오름차순(기본값), False : 내림차순

  • df.sort_values([컬럼1, 컬럼2])

df.sort_values("국가")
# df.sort_values("국가", ascending=False)
#여러컬럼
# df.sort_values(["국가", "판매단위"])
권역 국가 상품종류 판매채널 우선순위 주문일자 주문ID 발송일자 판매단위 단가 원가 총수익 총비용 총비윤
4027 Middle East and North Africa Afghanistan Cereal Offline H 2013-07-24 933963477 8/23/2013 9402 205.70 117.11 1933991.40 1101068.22 832923.18
3482 Middle East and North Africa Afghanistan Household Offline L 2012-02-04 772306096 3/21/2012 1391 668.27 502.54 929563.57 699033.14 230530.43
7775 Middle East and North Africa Afghanistan Cereal Offline H 2015-08-20 667230880 10/5/2015 7300 205.70 117.11 1501610.00 854903.00 646707.00
5976 Middle East and North Africa Afghanistan Meat Offline H 2012-08-11 161685121 8/29/2012 5075 421.89 364.69 2141091.75 1850801.75 290290.00
400 Middle East and North Africa Afghanistan Household Offline M 2011-03-25 440761888 4/1/2011 92 668.27 502.54 61480.84 46233.68 15247.16
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
4288 Sub-Saharan Africa Zimbabwe Cereal Online C 2016-01-16 742576920 2/6/2016 3867 205.70 117.11 795441.90 452864.37 342577.53
5432 Sub-Saharan Africa Zimbabwe Office Supplies Offline L 2010-01-26 322291505 2/11/2010 2073 651.21 524.96 1349958.33 1088242.08 261716.25
9541 Sub-Saharan Africa Zimbabwe Fruits Offline C 2015-11-20 436287105 11/27/2015 5904 9.33 6.92 55084.32 40855.68 14228.64
7640 Sub-Saharan Africa Zimbabwe Clothes Online C 2017-01-21 433102357 2/3/2017 3467 109.28 35.84 378873.76 124257.28 254616.48
8080 Sub-Saharan Africa Zimbabwe Fruits Offline C 2012-12-29 486245286 2/5/2013 9640 9.33 6.92 89941.20 66708.80 23232.40

10000 rows × 14 columns


1.6 행,열 삭제

drop(조건, axis= 0 1, inpalce=0 1)
  • 특정 조건에 맞는 행이나 열을 삭제하여 “출력”, 수정x

  • axis 속성의 값은 0:행, 1:열

  • inplace 속성은 (True:기준이 되는 데이터를 수정, False:기준 데이터 수정x)

#특정 행을 삭제(1행)
df.drop([1], axis=0)
# df.drop([1], axis=0, inplace=True)

# 특정 열을 삭제
df.drop(["주문일자"], axis=1)

1.7 인덱스 초기화

reset_index(drop = 0 1)
  • drop 속성 True : 기존 인덱스 삭제, False(기본값) : 기존 인덱스를 컬럼으로 만듦
df.reset_index()
# df.reset_index(drop=True)

1.8 파생변수 생성

df[파생변수명] = 계산식(이 컬럼에 들어갈 데이터의 값)

  • 실수 조심(컬럼명 누락x)

    • 데이터프레임명 = 계산한 데이터 값

    • 계산한 데이터는 스리즈이므로 데이터프레임에 못 들어감

df["총이윤"] = df["총수익"] - df["총비용"]

댓글남기기