python 강의정리
경로(상대경로 / 절대경로)
절대경로
- 환경에 상관없이 고정된 위치를 표현
상대경로
-
환경에 따라 주소가 바뀌는 구조
-
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["총비용"]
댓글남기기