데이터분석/Python

[Pandas] 데이터 프레임의 이해와 생성

Bookohol 2020. 3. 23. 11:04

Series?

  • Series는 numpy의 1차원 배열과 구조가 동일
  • 인덱스와 칼럼명을 가지고 있어서 numpy보다 사용이 편리
  • index를 지정해서 key값으로 사용할 수 있음
  • Series를 여러 개 붙이면 Dataframe이 됨
import pandas as pd
 
data = pd.Series(['one','two','three'])

data.values
>>> array(['one','two','three'])
data.index 
>>> RangeIndex(start=0, stop=3, step=1)
data = pd.Series(data.values, index=[2,3,4])
>>> 
2      one
3      two
4    three
data[2] # list와 같이 순서대로 
>>> 'three'
data['2'] # index 지정 시 str로 인식 
>>> 'one' 

DataFrame?

  • DataFrame는 numpy의 ndArray를 기반으로 한 행과 열로 이루어진 데이터 구조.
  • Series가 1차원 자료구조라면, 이 1차원의 자료구조가 여러 개 모인 2차원 데이터 구조(엑셀과 동일한 형태의 자료)

List, Dictionary 자료구조 형태에서 DataFrame으로 변경하는 법

 

1. 기본 자료구조에서 DataFrame 생성 시

  1. dictionary로 dataframe 생성 기본 자료 구조이므로 DataFrame 생성이 가능
## row oriented 
friend_dict_list = [{'name': 'Jone', 'age': 20, 'job': 'student'},
         {'name': 'Jenny', 'age': 30, 'job': 'developer'},
         {'name': 'Nate', 'age': 30, 'job': 'teacher'}]
df = pd.DataFrame(friend_dict_list)
>>>
age	job	name
0	20	student	Jone
1	30	developer	Jenny
2	30	teacher	Nate

## column oriented 

sales = {'account': ['Jones LLC', 'Alpha Co', 'Blue Inc'],
         'Jan': [150, 200, 50],
         'Feb': [200, 210, 90],
         'Mar': [140, 215, 95]}
df = pd.DataFrame.from_dict(sales)

# column 순서 바꾸고자 할 때 
df = df[['name', 'age', 'job']]
df
>>>
name	age	job
0	Jone	20	student
1	Jenny	30	developer
2	Nate	30	teacher

 

   2. OrderedDict로 데이터프레임 생성하기 

    : OrderedDict 자료구조로 DataFrame을 생성하면, 컬럼의 순서가 뒤바뀌지 않습니다

from collections import OrderedDict 

friend_ordered_dict = OrderedDict([ ('name', ['John', 'Jenny', 'Nate']),
          ('age', [20, 30, 30]),
          ('job', ['student', 'developer', 'teacher']) ] )
df = pd.DataFrame.from_dict(friend_ordered_dict)
df
>>>
  name	age	job
0	John	20	student
1	Jenny	30	developer
2	Nate	30	teacher

 

   3. list로 DataFrame 생성하기

## row oriented 

friend_list = [ ['John', 20, 'student'],['Jenny', 30, 'developer'],['Nate', 30, 'teacher'] ]
column_name = ['name', 'age', 'job']
df = pd.DataFrame.from_records(friend_list, columns=column_name)
df
>>> 
  name	age	job
0	John	20	student
1	Jenny	30	developer
2	Nate	30	teacher

## column oriented 

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

 

2. 파일을 통해 DataFrame 생성 시

df = pd.read_csv('directory') 

 

 

출처 :  http://pbpython.com/pandas-list-dict.html

 

Creating Pandas DataFrames from Lists and Dictionaries - Practical Business Python

Tue 06 September 2016 Posted by Chris Moffitt in articles    Introduction Whenever I am doing analysis with pandas my first goal is to get data into a panda’s DataFrame using one of the many available options. For the vast majority of instances, I use read

pbpython.com