SiLaure's Data

[Pandas] 05. 외부 데이터 읽고 쓰기 본문

Records of/Learning

[Pandas] 05. 외부 데이터 읽고 쓰기

data_soin 2021. 7. 26. 01:54

  • 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()

출력 : 

더보기
** dtype을 따로 변경하지 않았기 때문에 그대로 dtype은 그대로 object이다. **

<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

Comments