Python/Pandas Tutorial

[Python] Pandas Tutorial :: Create Data Frame with Dictionary, List

슈퍼짱짱 2020. 9. 21. 13:53
반응형

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

 

반응형