반응형
파이썬 판다스 데이터 프레임(dataframe) 생성¶
목차¶
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container{width:90%!important;}</style>"))
주요 패키지¶
In [2]:
import pandas as pd
import numpy as np
샘플 데이터 생성¶
- 데이터 프레임 생성을 설명하기 위한 데이터 생성 코드 입니다.
- 데이터는 이름, 성별, 나이, 영어성적, 수학 성정으로 구성됩니다.
- 아래 코드 실행시 csv, 엑셀 파일이 현재 경로에서 sample_data 폴더 않에 생성되며 각각의 파일 이름은 "sample_csv.csv"와 "sample_excel.xlsx" 입니다.
- "dic_list" 변수는 딕셔너리 내 리스트로 구성된 데이터를 담고 있습니다.
- "list_dic" 변수는 리스트내 딕셔너리로 구성된 데이터를 담고 있습니다.
- "array" 변수는 어레이로 구성된 데이터를 담고 있습니다.
- 난수 생성 함수를 활용하여 데이터를 만들었기 때문에 코드를 돌릴때 마다 데이터 값이 달라집니다.
In [3]:
from random import *
import names
import os
os.makedirs("sample_data", exist_ok=True)
age = [randint(16, 18) for i in range(0, 5)]
gender = [choice(["male", "female"]) for i in range(0, 5)]
name = [names.get_first_name(gender=g) for g in gender]
math = [randint(60, 100) for i in range(0, 5)]
english = [randint(60, 100) for i in range(0, 5)]
dic_list = {"age" : age, "gender" : gender, "name" : name, "math" : math, "enlish" : english}
array = np.array([age, gender, name, math, english]).T
list_dic = []
for i in array:
dic = {}
dic["age"] = i[0]
dic['gender'] = i[1]
dic["name"] = i[2]
dic["math"] = i[3]
dic["english"] = i[4]
list_dic.append(dic)
pd.DataFrame(dic_list).to_csv("sample_data/sample_csv.csv", index=False)
pd.DataFrame(dic_list).to_excel("sample_data/sample_excel.xlsx", index=False)
- dic_list 변수의 데이터 생김새입니다.
In [4]:
from pprint import pprint
pprint(dic_list)
{'age': [18, 18, 16, 16, 16], 'enlish': [94, 99, 65, 93, 87], 'gender': ['male', 'male', 'female', 'female', 'male'], 'math': [71, 84, 64, 74, 93], 'name': ['Douglas', 'Darrell', 'Karen', 'Kathy', 'David']}
- list_dic 변수의 데이터 생김새 입니다.
In [5]:
for s in list_dic:
print(s)
{'age': '18', 'gender': 'male', 'name': 'Douglas', 'math': '71', 'english': '94'} {'age': '18', 'gender': 'male', 'name': 'Darrell', 'math': '84', 'english': '99'} {'age': '16', 'gender': 'female', 'name': 'Karen', 'math': '64', 'english': '65'} {'age': '16', 'gender': 'female', 'name': 'Kathy', 'math': '74', 'english': '93'} {'age': '16', 'gender': 'male', 'name': 'David', 'math': '93', 'english': '87'}
CSV 파일 데이터프레임으로 불러오기¶
- "read_csv" 함수를 사용해서 csv 파일을 불러 옵니다.
In [6]:
pd.read_csv("sample_data/sample_csv.csv")
Out[6]:
age | gender | name | math | enlish | |
---|---|---|---|---|---|
0 | 18 | male | Douglas | 71 | 94 |
1 | 18 | male | Darrell | 84 | 99 |
2 | 16 | female | Karen | 64 | 65 |
3 | 16 | female | Kathy | 74 | 93 |
4 | 16 | male | David | 93 | 87 |
excel 파일 데이터프레임으로 불러오기¶
- "read_excel" 함수를 사용해서 excel 파일을 불러옵니다.
In [7]:
pd.read_excel("sample_data/sample_excel.xlsx")
Out[7]:
age | gender | name | math | enlish | |
---|---|---|---|---|---|
0 | 18 | male | Douglas | 71 | 94 |
1 | 18 | male | Darrell | 84 | 99 |
2 | 16 | female | Karen | 64 | 65 |
3 | 16 | female | Kathy | 74 | 93 |
4 | 16 | male | David | 93 | 87 |
딕셔너리 내 리스트로 구성된 변수 데이터프레임으로 불러오기¶
- 예시
In [8]:
pprint(dic_list)
{'age': [18, 18, 16, 16, 16], 'enlish': [94, 99, 65, 93, 87], 'gender': ['male', 'male', 'female', 'female', 'male'], 'math': [71, 84, 64, 74, 93], 'name': ['Douglas', 'Darrell', 'Karen', 'Kathy', 'David']}
- 크롤링 한 데이터를 데이터프레임으로 변환 할때 주로 사용합니다
- "DataFrame" 클래스를 사용합니다.
In [9]:
pd.DataFrame(dic_list)
Out[9]:
age | gender | name | math | enlish | |
---|---|---|---|---|---|
0 | 18 | male | Douglas | 71 | 94 |
1 | 18 | male | Darrell | 84 | 99 |
2 | 16 | female | Karen | 64 | 65 |
3 | 16 | female | Kathy | 74 | 93 |
4 | 16 | male | David | 93 | 87 |
리스트 내 딕셔너리로 구성된 변수 데이터프레임으로 불러오기¶
- 예시
In [10]:
pprint(list_dic)
[{'age': '18', 'english': '94', 'gender': 'male', 'math': '71', 'name': 'Douglas'}, {'age': '18', 'english': '99', 'gender': 'male', 'math': '84', 'name': 'Darrell'}, {'age': '16', 'english': '65', 'gender': 'female', 'math': '64', 'name': 'Karen'}, {'age': '16', 'english': '93', 'gender': 'female', 'math': '74', 'name': 'Kathy'}, {'age': '16', 'english': '87', 'gender': 'male', 'math': '93', 'name': 'David'}]
- json형태로 저장되어 있는 파일을 데이터 프레임으로 변환 할 때 주로 사용합니다.
- "DataFrame" 클래스를 사용합니다.
In [11]:
pd.DataFrame(list_dic)
Out[11]:
age | gender | name | math | english | |
---|---|---|---|---|---|
0 | 18 | male | Douglas | 71 | 94 |
1 | 18 | male | Darrell | 84 | 99 |
2 | 16 | female | Karen | 64 | 65 |
3 | 16 | female | Kathy | 74 | 93 |
4 | 16 | male | David | 93 | 87 |
어레이로 구성된 변수 데이터 데이터프레임으로 불러오기¶
- 예시
In [12]:
array
Out[12]:
array([['18', 'male', 'Douglas', '71', '94'], ['18', 'male', 'Darrell', '84', '99'], ['16', 'female', 'Karen', '64', '65'], ['16', 'female', 'Kathy', '74', '93'], ['16', 'male', 'David', '93', '87']], dtype='<U21')
- 차후 sklean의 샘플 데이터의 데이터 저장방식이 어레이 형태를 취한다.
- 용량 및 속도 계선에 도움이 된다.
- 단, columns 값을 따로 기억하여야 한다, 주로 아래와 같은 딕셔너리 내 어레이 형태로 colums 값을 기억한다.
In [13]:
dic_array = {"data" : array, "feature_name" :np.array(["age", "gender", "name", "math", "english"])}
pprint(dic_array)
{'data': array([['18', 'male', 'Douglas', '71', '94'], ['18', 'male', 'Darrell', '84', '99'], ['16', 'female', 'Karen', '64', '65'], ['16', 'female', 'Kathy', '74', '93'], ['16', 'male', 'David', '93', '87']], dtype='<U21'), 'feature_name': array(['age', 'gender', 'name', 'math', 'english'], dtype='<U7')}
In [14]:
pd.DataFrame(array, columns=["age", "gender", "name", "math", "english"])
Out[14]:
age | gender | name | math | english | |
---|---|---|---|---|---|
0 | 18 | male | Douglas | 71 | 94 |
1 | 18 | male | Darrell | 84 | 99 |
2 | 16 | female | Karen | 64 | 65 |
3 | 16 | female | Kathy | 74 | 93 |
4 | 16 | male | David | 93 | 87 |
반응형
'python' 카테고리의 다른 글
파이썬 숫자로만 구성된 문자열 확인하기 isdigit() (0) | 2023.03.16 |
---|---|
파이썬 리스트 len, append, insert, pop (0) | 2023.03.15 |
파이토치 텐서 슬라이스와 인덱싱 pytorch tensor slice and indexing (0) | 2023.03.13 |
파이토치 텐서 모양 바꾸기 tensor reshape (0) | 2023.03.13 |
argparse 변수를 dict(json) 형태로 전환 하기 var/python (0) | 2023.03.09 |
댓글