csmoon1010의 SW 블로그

[200712] Pandas 기초 공부 _ 개념, 데이터 프레임 만들기 (직접, 파일), 파일로 저장하기 본문

데이터&인공지능/데이터분석(Python)

[200712] Pandas 기초 공부 _ 개념, 데이터 프레임 만들기 (직접, 파일), 파일로 저장하기

csmoon1010 2020. 7. 12. 12:10

인프런의 Pandas 데이터 분석 기초 강의를 참고하여 정리하였다.

https://www.inflearn.com/course/pandas-%ED%8C%AC%EB%8D%94%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-%EA%B8%B0%EC%B4%88

 

1. Pandas, 데이터프레임, 시리즈

1) Pandas : 파이썬의 라이브러리. 데이터 분석 시 구조를 만들 떄 사용한다.

(1) 사용법

import pandas as pd

(2) 엑셀과 비교한 장점

- 엑셀 : 프로그램으로 만들 수 가 없음

- Numpy의 ndarray를 이용 : 빠른 수식 연산이 가능해짐

 

2) Series(시리즈)

: DataFrame을 구성하는 column들. 1차원 배열의 값(values)에 각 값에 대응되는 인덱스(index)를 부여할 수 있는 구조

#데이터 프레임은 시리즈로 이루어짐
type(data_frame.column1) # pandas.core.series.Series

3) 리스트로 데이터 프레임 만들기

(1) 리스트  시리즈

list_temp = [1,2,3]
list_temp2 = ['one', 'two', 'three']

s1 = pd.core.series.Series(list_temp)
s2 = pd.core.series.Series(list_temp2)

(2) 시리즈 데이터프레임

: dict형태로 column명을 지정해주며 넣어준다.

pd.DataFrame(data = dict(num = s1, word = s2))

 

2. 파일에서 데이터 불러오기

1) csv에서 읽어오기

#csv 파일에서 받아오기
df = pd.read_csv(r'C:\Users\Ower\Desktop\2020summer\pandas-master\data\friend_list.csv')

2) txt에서 읽어오기

- 쉼표로 구분된 경우

#txt 파일에서 받아오기(,으로 구분됨)
df2 = pd.read_csv(r'C:\Users\Ower\Desktop\2020summer\pandas-master\data\friend_list.txt')

- 쉼표가 아닌 다른 delimiter 로 구분된 경우

#txt 파일에서 받아오기(다른 문자로 구분됨 _ delimiter)
df3 = pd.read_csv(r'C:\Users\Ower\Desktop\2020summer\pandas-master\data\friend_list_tab.txt', delimiter = '\t')

3) 파일에 헤더 정보가 없는 경우

- header = None임을 명시

- names에 column이름으로 이루어진 리스트 지정

#파일에 헤더정보가 없는 경우(data만 들어있는 경우)
df4 = pd.read_csv(r'C:\Users\Ower\Desktop\2020summer\pandas-master\data\friend_list_no_head.csv', header = None)
df4.columns = ['name', 'age', 'job']

#한번에 처리
df5 = pd.read_csv(r'C:\Users\Ower\Desktop\2020summer\pandas-master\data\friend_list_no_head.csv', header = None, names = ['name', 'age', 'job'])

 

3. 데이터프레임 생성하기

1) Dictionary 를 사용

(1) 사전 리스트 형성 후 순서 나중에 지정(사전의 key들은 순서가 정해져있지 않음!!)

friend_dict_list = [
    {'name' : 'John', 'age' : 25, 'job':'studnent'},
    {'name' : 'Nate', 'age' : 30, 'job':'teacher'}
]
df = pd.DataFrame(friend_dict_list)

#순서 정해주기
df = df[['name', 'age', 'job']]

(2) collections 라이브러리의 OrderdDict 이용

: pd.DataFrame.from_dict

from collections import OrderedDict

friend_ordered_dict = OrderedDict(
    [
        ('name' , ['John', 'Nate']),
        ('age', [25, 30]),
        ('job', ['student', 'teacher'])
    ]
)

df = pd.DataFrame.from_dict(friend_ordered_dict)

 

2) list를 사용하는 경우

(1) 컬럼명 따로 지정

df = pd.DataFrame.from_records(firend_list, columns = column_name)

friend_list = [
    ['John', 20, 'student'],
    ['Nate', 30, 'teacher']
]
column_name = ['name', 'age', 'job']

df = pd.DataFrame.from_records(friend_list, columns = column_name)

(2) 컬럼명 함께 지정

: 이전 버전에는 from_items가 있었으나 최신버전에선 사용할 수 없게 됨. OrderedDict으로 바꿔서 사용한다.

friend_list = [
    ['name', ['John', 'Nate']],
    ['age', [20, 30]],
    ['job', ['student', 'teacher']]
]
#df = pd.DataFrame.from_items(friend_list)
df = pd.DataFrame.from_dict(OrderedDict(friend_list))

 

4. 데이터 프레임 저장하기

: to_csv 를 이용해 csv 파일로 저장할 수 있다.

1) index(row_id), header 지정

#index, header True
df.to_csv('friends.csv', index = True, header = True)

#row id 생략
df.to_csv('friends.csv', index = False, header = True)

#column name 생략
df.to_csv('friends.csv', index = True, header = False)

2) 빈칸의 처리

na.rep 를 통애 빈칸(None)에 다른 문자를 지정할 수 있다.

#빈칸에 다른 문자 채우기 na.rep = '-'
df.to_csv('friends.csv', index = False, header = False, na_rep = '-')
Comments