2020/09/18 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: pandas란? 데이터프레임이란? 시리즈란?
2020/09/19 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: read csv, txt file with pandas
판다스로 데이터프레임 만들기 in python
0. Import Pandas Library
import pandas as pd
1. Create Pandas Data Frame with Dictionary :: 딕셔너리로 판다스 데이터프레임 만들기
원하는 데이터를 딕셔너리 형태로 만든다.
name, age, job 의 3 컬럼으로 이루어진 2 row 의 데이터프레임을 만들기 위한 딕셔너리는 다음과 같이 만든다.
friend_dict_list = [
{'name' : 'Jone',
'age' : 25,
'job' : 'student'},
{'name' : 'Nate',
'age' : 30,
'job' : 'teacher'}
]
> friend_dict_list
[{'age': 25, 'job': 'student', 'name': 'Jone'},
{'age': 30, 'job': 'teacher', 'name': 'Nate'}]
이후 pandas Data Frame 형태로 바꾸어준다.
df = pd.DataFrame(friend_dict_list)
> df
age job name
0 25 student Jone
1 30 teacher Nate
단, Dictionary는 key 값의 순서가 보장되지 않는다.
컬럼을 name -> age -> job 순서로 생성했지만 실제로는 age -> job -> name 순서로 생성된 것을 볼 수 있다.
다시 컬럼 순서를 변경해주는 코드는 다음과 같다.
df = df[['name','age','job']]
> df
name age job
0 Jone 25 student
1 Nate 30 teacher
처음부터 key 값의 순서를 보장해서 만드는 방법은 collections 라이브러리에 OrderDict 을 사용하면 된다.
OrderDict 을 import 해주고, 이를 활용해 컬럼명과 함께 딕셔너리를 생성한다.
from collections import OrderedDict
friend_orderd_dict = OrderedDict(
[
('name', ['John','Nate']),
('age', [25, 30]),
('job', ['student','teacher'])
]
)
> friend_orderd_dict
OrderedDict([('name', ['John', 'Nate']),
('age', [25, 30]),
('job', ['student', 'teacher'])])
이후 pandas Data Frame 형태로 만들어준다.
df = pd.DataFrame(friend_orderd_dict)
> df
name age job
0 Jone 25 student
1 Nate 30 teacher
key 값의 순서가 보장된 것을 확인할 수 있다.
2. Create Pandas Data Frame with List :: 리스트로 판다스 데이터프레임 만들기
이번에는 리스트로 데이터프레임 만드는 방법을 알아보겠다.
한 row 씩 데이터를 만들어주고, 컬럼명 리스트도 만들어 준 뒤 pandas DataFrame에 from_records로 컬럼명을 지정하여 데이터 프레임을 만들어준다.
friend_list = [
['Jone',25,'student'],
['Nate',30,'teacher']
]
column_name = ['name','age','job']
df = pd.DataFrame.from_records(friend_list, columns=column_name)
따로 컬럼명 지정 없이 한 번에 만드는 방법은 다음과 같다.
위 코든 레코드를 기준으로 한 row 씩 데이터를 생성했다면, 이번에는 컬럼을 기준으로 한 컬럼씩 데이터를 생성한다.
단, pandas DataFrame으로 생성할 때 from_records가 아니라 from_items로 생성한다.
friend_list = [
['name',['John','Nate']],
['age',[25,30]],
['job',['student','teacher']]
]
df = pd.DataFrame.from_items(friend_list)
전체 코드
###################################################
# 제목 : Pandas Tutorial
# 작성자 : SK C&C 이다경 선임
# 작성일 : 20200918
#
# Description
#
# [SK C&C] Pandas Tutorial
# Chapter3 : 데이터프레임 생성하기
###################################################
# 0. import pandas library
import pandas as pd
# 1. Create Data Frame with Dictionary
friend_dict_list = [
{'name' : 'Jone',
'age' : 25,
'job' : 'student'},
{'name' : 'Nate',
'age' : 30,
'job' : 'teacher'}
]
friend_dict_list
# [{'age': 25, 'job': 'student', 'name': 'Jone'},
# {'age': 30, 'job': 'teacher', 'name': 'Nate'}]
df = pd.DataFrame(friend_dict_list)
df ## dictionary는 key 값의 순서가 보장되지 않음. (name, age, job -> age, job, name)
# age job name
# 0 25 student Jone
# 1 30 teacher Nate
## 컬럼 순서 바꾸기
df = df[['name','age','job']]
df
# name age job
# 0 Jone 25 student
# 1 Nate 30 teacher
## key의 순서를 보장하여 Data Frame 생성하기
from collections import OrderedDict
friend_orderd_dict = OrderedDict(
[
('name', ['John','Nate']),
('age', [25, 30]),
('job', ['student','teacher'])
]
)
friend_orderd_dict
# OrderedDict([('name', ['John', 'Nate']),
# ('age', [25, 30]),
# ('job', ['student', 'teacher'])])
df = pd.DataFrame(friend_orderd_dict)
df
# name age job
# 0 John 25 student
# 1 Nate 30 teacher
# 2. Create Data Frame with List
friend_list = [
['Jone',25,'student'],
['Nate',30,'teacher']
]
column_name = ['name','age','job']
df = pd.DataFrame.from_records(friend_list, columns=column_name)
df
# name age job
# 0 Jone 25 student
# 1 Nate 30 teacher
##
friend_list = [
['name',['John','Nate']],
['age',[25,30]],
['job',['student','teacher']]
]
friend_list
# [['name', ['John', 'Nate']],
# ['age', [25, 30]],
# ['job', ['student', 'teacher']]]
df = pd.DataFrame.from_items(friend_list)
df
# name age job
# 0 Jone 25 student
# 1 Nate 30 teacher
출처
www.youtube.com/watch?v=x3ueeuoU2x0&list=PLVNY1HnUlO25etNe08s1H1nIIbbZdJwxA&index=3