판다스가 제공하는 DataFrame 구조는 엑셀과 비슷하다고 볼 수 있습니다.
추가적으로 행과 열의 이름을 지정할 수 있습니다.
따로 행의 이름을 지정하지 않으면 index 가 저절로 생성됩니다. (0 부터)
>>>import pandas as pd #230516
>>>data=pd.DataFrame({'이름':['카리나','윈터','닝닝','지젤'],
'성별':['여','여','여','여'],
'나이':['22','24','22','23']})
>>>print(data)
이름 성별 나이
0 카리나 여 22
1 윈터 여 24
2 닝닝 여 22
3 지젤 여 23
pd.DataFrame() 안의 데이터 자료형은 '딕셔너리' 입니다.
딕셔너리는 Key:Value 쌍을 원소로 하는 자료구조로
Dic = {'Key1':'Value1','Key2':'Value2','Key3':'Value3'}
Key 값에는 숫자나 문자형(다른 자료형 불가) , Value값에는 어떤 자료형이건 대입 가능합니다.
딕셔너리를 먼저 정의한 후 DataFrame에 대입해도 무방합니다.
>>>dic = {'이름':['카리나','윈터','닝닝','지젤'],
'성별':['여','여','여','여'],
'나이':['22','24','22','23']}
>>>data = pd.DataFrame(dic)
>>>data
이름 성별 나이
0 카리나 여 22
1 윈터 여 24
2 닝닝 여 22
3 지젤 여 23
+ colab 으로 작업 중인데 print(data) 가 아닌 data로 출력하면 표 형태로 나옵니다.
리스트 형태가 아닌 딕셔너리를 DataFrame 형식에 대입이 가능할까?
>>>my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
>>>my_dict
{'name': 'John', 'age': 25, 'city': 'New York'}
>>>frame=pd.DataFrame(my_dict)
ValueError Traceback (most recent call last)
<ipython-input-14-7a0ca70ae385> in <cell line: 1>()
----> 1 frame=pd.DataFrame(my_dict)
ValueError가 발생합니다.
주어진 딕셔너리가 모든 값이 스칼라 값인 경우,
pd.DataFrame() 함수를 사용하여 바로 DataFrame을 생성하는 것은 지원되지 않습니다.
스칼라 값은 단일 값이므로, 열(column)이나 행(row)의 구조가 없어서 DataFrame으로 변환할 수 없습니다.
따라서, 스칼라 값을 포함하는 딕셔너리를 DataFrame으로 변환하기 위해서는 추가적인 처리가 필요합니다.
예를 들어, 주어진 딕셔너리의 값들을 리스트나 배열로 감싸주어야 합니다.
이렇게 하면 각 값들이 열(column)이나 행(row)의 구조를 가지게 되어 DataFrame으로 변환할 수 있습니다.
딕셔너리를 리스트로 감싸주어 DataFrame으로 변환해보기
>>>import pandas as pd
>>>my_dict = {'name': ['John'], 'age': [25], 'city': ['New York']}
>>>frame = pd.DataFrame(my_dict)
각 값들을 리스트로 감싸주었습니다.
frame은 1행 x 3열의 DataFrame이 되며, 단일 값을 가지는 스칼라 값들이 올바르게 변환되었습니다.
따라서, 주어진 딕셔너리가 스칼라 값을 포함하고 있다면,
각 값을 리스트나 배열로 감싸주어야 DataFrame으로 변환할 수 있습니다.
이렇게 수정한 코드를 실행하면 정상적으로 DataFrame을 생성할 수 있습니다.
'파이썬 (Python) > Pandas (DataFrame)' 카테고리의 다른 글
파이썬 판다스 :: 시리즈 Series 정의 및 생성 / 함수활용, 인덱싱 (0) | 2023.05.23 |
---|---|
파이썬 판다스 :: 데이터프레임 DataFrame 데이터 접근, 조작 (0) | 2023.05.17 |
파이썬 판다스 :: 데이터프레임 DataFrame 생성, 기본정보 접근 (0) | 2023.05.17 |