본문 바로가기
파이썬 판다스

비전공자가 파이썬-판다스로 데이터 분석 할 때 알아두면 좋은 것들(절대 경로, 상대경로)

by 관점부자 2021. 6. 8.

 

"시작이 반이다"(응,아님...)

환경만 불러오면 어떻게든 될 줄 알았는데,

이 다음 CSV파일을 가져오는데서 막혔다.

비전공자가 파이썬으로 데이터 분석에 있어서 알아두면 좋은 것들을 사진과 몇 가지 개념들을 정리했다.

Kaggle에 들어가면 친절하게 아래와 같이 분석코드를 설명해주신다.

그래서 나는 코드 복사하다보면 내가 알겠지 했는데, 아니었다.....

 

요약: 내 컴퓨터에서 개발자도구 내에서 판다스 분석 환경을 세팅하고 싶다면.

1. 경로를 지정해준다: 아래 절대 경로와 상대경로 이해하면 된다.

import pandas as pd     

import os

for dirname, _, filenames in os.walk('경로를 지정해준다.'):

    for filename in filenames:

        print(os.path.join(dirname, filename))

>> 코드 뜻

1) 판다스를 불러와 앞으로 "pd"라고 부를게

2) OS를 불러와

3) 경로 내에 있는 파일을 하나하나 돌아다니며 불러와

4) 근데 filename만 불러와야돼 (여기서는 CSV만)

5) 그리고 경로와 파일이름을 병합하여 새 경로 만들어줘

 

2. 한 데이터프레임(=excel의 시트) 내에서 여러 CSV 파일 볼 수 있는 코드

 

df = pd.concat([pd.read_csv("2019-Oct.csv"),pd.read_csv("2019-Nov.csv"),pd.read_csv('2019-Dec.csv'),pd.read_csv('2020-Jan.csv'),pd.read_csv('2020-Feb.csv')])

 

>>concat 함수로 2019-Oct부터 2020-Jan 까지 한 데이터프레임(=시트)에 넣어줘

 

 

굉장히 친절하게 적어놨지만, 여기서 이대로 개발자 도구(쥬피터 노트북, visual data code 등)에 넣어보면

error가 뜬다. 사실 Kaggle 내의 개발자 도구에서는 이 코드 그대로 쓸 수 있다. 근데 너무 프로그램이 무거웠다.

 

내 컴퓨에서 쓰려면 아래 빨간글씨를 내 컴퓨터가 있는 경로로 이해해야한다.

3번째 줄에 이 코드:

for dirname, _, filenames in os.walk('/kaggle/input'):

 

이 코드를 이해 했다면 이쯤에서 백스페이스 누르고 이 글을 안 보셔도 된다. 

이 게시글에서는 계속 이 개념만 이해할 생각으로 쓰고 있기 때문이다.

 

나는 판다스를 사용하면서 아래와 같은 욕망이 꿈트렸다:

 "나는 내 컴퓨터에서 캐글에서 다운받은 CSV를 한번에 열고 싶다."

그 동안 내 삶은 file-open만 누르면 모든 것을 할 수 있는 삶이었는데,

파이썬은 이 하찮은 일 하나 쉽게 하게 해주지 못해서 안 쓸려고했다.

 

비전공자 입장에서 파이썬을 알아보니 이런 느낌이었다.

한글을 전혀 모르는 한글을 공부하고 싶은 외국인에게 한글의 ㄱㄴㄷㄹ을 하나 하나 다 가르친 후, 다시 모음을 가르치고, 단어를 가르치고, 문장을 가르치고 etc..

결론: 끝이 없다.

 

그럼에도 우리가 한글을 모르면 한글을 쓸 수 없듯이, 파이썬의 언어를 모르면 분석을 할 수가 없어서 나는 한다.

 

그럼 우리가 파일을 우리의 컴퓨터로 불러오기 위해 알아야할 개념들은 무엇인지 살펴보자.

1.파일, 디렉터리 이해

프로그램이 종료된 후에도 데이터를 계속 유지하려면 "파일"로 저장해야 한다.

우리가 흔히 아는 파일은 실행파일로만 알고 있는데, 사실 파일=경로+파일이름이라고 한다.

  • 파일은 경로와 파일이름으로 구성 됨

 

  • Python에서는 \ (\):'백슬래시'라고도 불린다., / 모두 사용 가능하며, \ (\)의 경우 \\와 같이 사용함

1-01. Dir name, Base name

  • Dirname : path에서 Basename을 제외한 경로
    • os.path.dirname(file)을 사용하여 dirname을 알아낼 수 있음
  • Basename : path에서 마지막 파일/디렉터리 이름
    • os.path.basename(file)을 사용하여 basename을 알아낼 수 있음

1-01 정말 중요:  파일과 경로에 대해 알아야 내가 현재 어디에서 작업하는지를 알고, CSV를 어디에 위치시켜야 되는지 알 수 있기 때문이다.

 

# 1. 경로 변경 및 확인

import os

print(os.getcwd())

os.chdir('/content/drive/MyDrive')

print(os.getcwd())

 

1-01을 이해하면 위와 같은 디렉토리 변경법을 이해 할 수 있다.

각 약어의 뜻은

os =operating system

getcwd= get current working directory : 현재 작업하고 있는 경로

chdir= change directior

 

그래서 저 코드는 " 현재 작업하고 있는 경로 알고싶어. 확인해줘, 나 my drive로 바꿨으니, 확인해줘"

라고 이해하면 될거 같다.

 

1-02. 절대 경로, 상대 경로

  • File System에서 경로(Path)는 File, Directory 등의 위치 정보를 의미함
  • Path를 표기하는 방법으로 '절대 경로'와 '상대 경로' 가 있음
    • 절대 경로 : 리눅스인 경우 '/' 부터, Windows인 경우 'C:/'와 같은 드라이브 이름부터 시작하는 경로
    • 상대 경로 : 현재 디렉터리를 기준으로 상위, 하위 디렉터리를 이동하며 표현되는 경로
      • . : 현재 디렉터리
      • .. : 상위 디렉터리
      • 이름 : 하위 디렉터리

 

디렉토리 함수가 이해 되었다면, 이제는 내 컴퓨터에 적용해본다.

 

 

import os

for dirname, _, filenames in os.walk('/kaggle/input'):

    for filename in filenames:

        print(os.path.join(dirname, filename))

 

그래서 내 PC에서 이 파일을 쓰고 싶다면 나는 

import os

for dirname, _, filenames in os.walk('C:\Users\kim\Desktop\text mining\e-cosmetics'):

    for filename in filenames:

        print(os.path.join(dirname, filename))

 

로 수정하여 안에 있는 파일을 다 불러오는 코드를 작성해야 한다.

 

작성한 자료를 한 데이터프레임(엑셀 시트와 같음)에서 보는 코드

 

df = pd.concat([pd.read_csv("2019-Oct.csv"),pd.read_csv("2019-Nov.csv"),pd.read_csv('2019-Dec.csv'),pd.read_csv('2020-Jan.csv'),pd.read_csv('2020-Feb.csv')])

 

코드가 잘 적용되면 아래의 함수를 통해 X행과 O열이 있다는 것과 데이터프렘의 3행을 확인할 수 있다.

print (df.shape) >>> 행과 열의 개수 반환

df.head(3) >>> 데이터프레임의 3행까지 값 반환

 

 

 

 

아래 두 링크가 이 글을 작성하는데 도움이 되고 참고되었다.

 

https://www.youtube.com/watch?v=VcME37S9mnY - 절대경로, 상대경로 개념이해하기

https://www.kaggle.com/danofer/ecommerce-cosmetic-predict-purchases-data-prep  kaggle에서 사용한 코드