본문 바로가기

Study/AI

[데이터 처리](Kaggle Pandas Tutorials) 1. Pandas 이용하여 데이터 생성하고 읽고 쓰기

반응형

본 포스트의 내용은 아래의 Kaggle Pandas Tutorials Course의 각 step에 대해 공부한 것을 바탕으로 합니다.

https://www.kaggle.com/code/residentmario/creating-reading-and-writing

 

Creating, Reading and Writing

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

1. Pandas library import하기

아래의 명령어를 통해 Pandas library를 가져와 이용할 수 있다. 

import pandas as pd

 

이때 Kaggle이나 Colab 등의 온라인 클라우드 환경에서는 기본적으로 pandas가 설치되어 있기 때문에 import만 하면 다운로드 없이 사용할 수 있지만 Jupyter notebook, Python 등의 로컬 환경에서는 당연히 pandas를 먼저 설치해주어야 한다. cmd 창에 'pip install pandas'를 입력하여 먼저 다운로드를 받은 후에 클라우드 환경과 같이 진행하면 된다.

 

2. 데이터 create

pandas의 데이터 오브젝트는 크게 두 가지가 있다. 바로 DataFrame과 Series이다. 

 

1. DataFrame

DataFrame은 table, 즉 표이다. 

데이터프레임은 entry(어떤 값을 가진 각각의 개체들)들의 배열을 포함하며 각 entry는 row와 column의 조합으로 대응시킬 수 있다. 이때 entry의 자료형은 정수든 문자열이든 모두 가능하다.

 

아래의 명령어를 입력하면 다음과 같은 DataFrame을 생성할 수 있다.

pd.DataFrame({'Yes': [50, 21], 'No': [131, 2]})

위의 표에서 "0, No" entry는 131의 값을 갖고 마찬가지로 "0, Yes" entry는 50의 값을 갖는다.

 

pd.DataFrame()

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html

 

pandas.DataFrame — pandas 1.4.2 documentation

Column labels to use for resulting frame when data does not have them, defaulting to RangeIndex(0, 1, 2, …, n). If data contains column labels, will perform column selection instead.

pandas.pydata.org

pd.DataFrame() 명령어로 Dataframe 오브젝트를 생성할 수 있다. 

  • data: 딕셔너리

괄호 안에 들어가는 인자는 딕셔너리 자료형이다. key로는 column 이름을 넣고 그 value로는 entry들의 list를 넣는다.

pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 'Sue': ['Pretty good.', 'Bland.']})
  • index

각 row에 대한 index는 기본적으로 0, 1, 2, ... 의 오름차순 순서로 배정된다. 

index를 원하는 대로 조작하고 싶다면 index 파라미터에 원하는 리스트를 넣어주면 된다.

pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 
              'Sue': ['Pretty good.', 'Bland.']},
             index=['Product A', 'Product B'])

 

2. Series

https://pandas.pydata.org/docs/reference/series.html#

 

Series — pandas 1.4.2 documentation

Warning Series.attrs is considered experimental and may change without warning.

pandas.pydata.org

Series는 데이터 값들의 시퀀스로, DataFrame의 열 한 개를 떼어낸 list 하나를 말한다. 다르게 말하면 Series를 여러 개 묶어둔 것이 DataFrame이란 것이다.

DataFrame은 여러 개의 list를 이어붙인 table이고 Series는 단 하나의 list이다.

  • name 

DataFrame과 달리 column의 이름은 따로 없고 Series 데이터의 전체를 가리키는 이름만 있다.

pd.Series([30, 35, 40], index=['2015 Sales', '2016 Sales', '2017 Sales'], name='Product A')

  • index

list와는 구분되는 점이 Series는 DataFrame처럼 각 row 마다 index 번호가 붙어있다.

 

 

pd.Series([1, 2, 3, 4, 5])

pd.Series() 명령어로 Series 오브젝트를 생성할 수 있다.

 

아래의 명령어를 입력하면 다음과 같은 Series를 만들 수 있다.

pd.Series([1, 2, 3, 4, 5])

 

3. 데이터 파일 읽어오기

일반적으로 우리는 데이터를 처음부터 직접 만들기 보다는, 만들어져 있는 데이터를 가져와서 작업한다. 그리고 이때 CSV 파일의 형식이 가장 많이 사용된다.

CSV 파일은 Comma Seperated Values라는 이름처럼 각각의 값을 comma(,)로 구분한 자료형이다. 

 

pd.read_csv()

https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

 

pandas.read_csv — pandas 1.4.2 documentation

Delimiter to use. If sep is None, the C engine cannot automatically detect the separator, but the Python parsing engine can, meaning the latter will be used and automatically detect the separator by Python’s builtin sniffer tool, csv.Sniffer. In addition

pandas.pydata.org

pd.read_csv()를 사용하면 외부 csv 파일에 저장되어 있는 데이터 값을 현재 작업 중인 코드에 가져와 DataFrame으로 만들어 저장할 수 있다.

  • filepath

괄호 안에는 불러올 문서의 위치나 경로를 적으면 된다. 상대 위치든 절대 위치든 상관 없다.

  • index_col 

CSV 파일에는 내장된 index가 있는데, pandas가 새로운 인덱스를 생성하지 않고 이 인덱스를 사용하도록 설정하려면 'index_col=0'을 추가해주면 된다.

 

그 외에 30개나 되는 파라미터가 있기 때문에 필요한 것은 custom해서 사용하면 된다.

 

4. DataFrame의 속성(attribute)

 

파라미터 vs 속성

함수의 괄호 안 인자로 전달되는 것을 파라미터라고 말하고, dot을 찍어 사용하는 것을 속성이라고 한다. 즉, pd.DataFrame(data, index=[])에서 data와 index는 파라미터이고 df.shape에서 shape가 속성이다.

 

  • df.shape

DataFrame의 속성으로 shape를 사용하면 DataFrame의 크기를 알 수 있다.

df.shape

  • df.head()

DataFrame의 내용물을 head를 통해 들여다 볼 수 있다. () 안에 아무것도 작성하지 않으면 기본적으로 5개의 행을 보여준다.

df.head()

 

반응형