SiLaure's Data
[Pandas] 05. 외부 데이터 읽고 쓰기 본문
- Pandas에서는 데이터를 불러올 때 여러가지 함수들을 사용할 수 있고,
그 함수들은 file, 확장자에 귀속된다.
- data 폴더에 있는 iris.csv 파일을 불러와서 변수 data에 저장하기
data = pd.read_csv("../data/Iris.csv")
data
출력 :
- data 특징 확인하기
data.info()
출력 :
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Id 150 non-null int64
1 SepalLengthCm 150 non-null float64
2 SepalWidthCm 150 non-null float64
3 PetalLengthCm 150 non-null float64
4 PetalWidthCm 150 non-null float64
5 Species 150 non-null object
dtypes: float64(4), int64(1), object(1)
memory usage: 7.2+ KB
Series 중에 하나라도 문자열이 포함되어 있으면 dtype은 object가 된다.
- Species column을 숫자로 바꾸기
1. Species 종류 확인
data["Species"]
data.Species.value_counts() --비추 : unique한 숫자를 알아보기 힘들다.
data.Species.unique() --추
set(data["Species"])
출력 :
0 Iris-setosa
1 Iris-setosa
2 Iris-setosa
3 Iris-setosa
4 Iris-setosa
...
145 Iris-virginica
146 Iris-virginica
147 Iris-virginica
148 Iris-virginica
149 Iris-virginica
Name: Species, Length: 150, dtype: object
Iris-setosa 50
Iris-versicolor 50
Iris-virginica 50
Name: Species, dtype: int64
array(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], dtype=object)
{'Iris-setosa', 'Iris-versicolor', 'Iris-virginica'}
2. set으로 묶기
set(data["Species"])
출력 :
{'Iris-setosa', 'Iris-versicolor', 'Iris-virginica'}
3. Sepcies column을 뽑아내서 숫자로 바꾸기
Iris-setosa -> 0
Iris-versicolor -> 1
Iris-virginica -> 2
dataframe에서 Species가 "Iris-xxx"인 것을 row로 하고,
Species를 열로 가지는 데이터의 리스트를 각각 0, 1, 2 로 바꾼다.
data.loc[data["Species"] == "Iris-setosa", "Species"] = 0
data.loc[data["Species"] == "Iris-versicolor", "Species"] = 1
data.loc[data["Species"] == "Iris-virginica", "Species"] = 2
data.info()
출력 :
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Id 150 non-null int64
1 SepalLengthCm 150 non-null float64
2 SepalWidthCm 150 non-null float64
3 PetalLengthCm 150 non-null float64
4 PetalWidthCm 150 non-null float64
5 Species 150 non-null object
dtypes: float64(4), int64(1), object(1)
memory usage: 7.2+ KB
- 바꾼 Dataframe을 Iris_edited.csv 로 저장하기
data.to_csv("../data/Iris_edited.csv")
- 다른 파일도 불러오기
data2 = pd.read_csv("../data/kaggle_survey_2020_responses.csv")
data2
출력 :
- 박사 학위 소지자들만 골라내기
--masking 작업
data2["Q4"] == "Doctoral degree"
출력 :
0 False
1 True
2 False
3 False
4 False
...
20032 False
20033 False
20034 False
20035 False
20036 False
Name: Q4, Length: 20037, dtype: bool
- masking을 전체 dataframe에 index로 걸어주면 해당 column이 true인 데이터만 뽑아낼 수 있다.
# 박사 학위 소지자들만 골라보자.
data2.Q4.unique()
# --masking 작업
data2["Q4"] == "Doctoral degree"
data2[data2.Q4 == "Doctoral degree"]
phd = data2[data2["Q4"] == "Doctoral degree"]
phd
출력 :
- 박사 학위 소지자들에 대한 정보만 kaggle_survey_2020_phd.csv로 다시 저장
phd.to_csv("../data/kaggle_survey_202_phd.csv")
- (OPTIONAL) 박사 학위 소지자이면서, 대한민국 국적을 가진 사람들을 뽑기
# 국적 종류 확인, 한국 표기 확인
set(phd["Q3"])
# 한국 국적 masking
phd["Q3"] == "Republic of Korea"
# making을 indexing해서 다른 변수에 저장
phd_korean = phd[phd["Q3"] == "Republic of Korea"]
phd_korean
출력 :
- 확인
phd_korean.info()
출력 :
<class 'pandas.core.frame.DataFrame'>
Int64Index: 11 entries, 5897 to 19990
Columns: 355 entries, Time from Start to Finish (seconds) to Q35_B_OTHER
dtypes: object(355)
memory usage: 30.6+ KB
'Records of > Learning' 카테고리의 다른 글
[Seaborn] 02. histplot & displot (0) | 2021.07.26 |
---|---|
[Seaborn] 01. Seaborn이란 (0) | 2021.07.26 |
[Pandas] 04. DataFrame Indexing (0) | 2021.07.26 |
[Pandas] 03. DataFrame Method (0) | 2021.07.25 |
[Pandas] 01. Pandas란 / 02. Pandas의 기본 자료구조(Series, DataFrame) (0) | 2021.07.25 |