ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022년 12월 1일 목요일(엑셀파일을 파이썬으로 읽어와서 작업하기)
    개발/개발일지(국비지원) 2022. 12. 1. 21:46
    728x90

    pandas 표형태의 데이터 저장모듈이다.

    Series와 DataFrames 두가지형태를 가지고있다.

     

    pandas를 사용하기위해서

    import pandas as pd (별명으로 pd를 설정하여 작성에 용이하게 설정한다)

     

    40-45행

    튜플형식의 데이터를 Series형식의 데이터로 변환해준다.

    sr.index 를 출력하면

    결과)

    ['이름', '생년월일', '성별', '학생여부']

    가 출력된다.

     

    sr.values를 출력하면

    결과)

    ['홍길동' '1991-01-25' '남' True]가 출력된다.

     

    89행 결과

     나이 성별    학교
    홍길동  15  남   서울중
    성춘향  17  여  서울여고
    이몽룡  17  남   서울고

     

    94-95행 결과

     나이 성별    학교
    학생1  15  남   서울중
       학생2  17  여  서울여고
    학생3  17  남   서울고

     

    97-99행 결과

     age gender school
    학생1  15  남   서울중
       학생2  17  여  서울여고
    학생3  17  남   서울고

     

    101-104행 결과

     나이 gender school
    학생1  15      남    서울중
    학생2  17      여   서울여고
    학생3  17      남    서울고

     

    117-118행 결과

    수학  영어   음악   체육
    홍길동  90  98   85  100
    이몽룡  80  88   95   90
    김삿갓  70  95  100   90

     

    126행

    수학    80.000000
    영어    93.666667
    음악    93.333333
    체육    93.333333

     

    129행-132행

    df.mean['컬럼명'] : 해당컬럼의 평균을 구할수있다.

    df['수학'].mean() : 컬럼의 평균을 구하는 2번째방법

    df['컬럼명'] : 해당 컬럼명의 데이터들을 모두 조회할수있다.

     

    163행-173행

    행을조회할때는 df.loc['행명'] 을통해 조회하는방법

    df.iloc[0]: 인덱스 순서를 통해 조회하는방법 2가지가있다.

     

    201행-206행

     

    김삿갓의 총점: 355
    김삿갓의 평균: 88.75
    김삿갓의 중간값: 92.5
    김삿갓의 표준편차: 13.149778198382917

     

    df.loc['김삿갓'].describe()의 결과

    간략한정보를 출력해준다.

    Out[99]: 
    count      4.000000
    mean      88.750000
    std       13.149778
    min       70.000000
    25%       85.000000
    50%       92.500000
    75%       96.250000
    max      100.000000
    Name: 김삿갓, dtype: float64

     

    데이터프레임을 복사하는 방법은간단하다.

    df2 = df(데이터프레임) 하면

    df2는 데이터프레임이 복사가됐다.

    하지만, 이렇게 복사한경우

    df의 값을 변경하면

    df2도 똑같이 변경될것이다.

     

    이것을 방지하기위해

    깊은복사를 사용한다.

     

    219-221행

    df3=df[:]로 깊은복사를하게되면

    df3와 df는 서로 다른객체가 되면서

    df의 값을 변경해도 df3는 처음복사된값을 유지한다.

     

    228-230행

    행과 열을제거할때는

    df.drop(['열/행의이름'],axis=0(행을제거할떄),1(열을제거할때),inplace=True)를 사용한다.

    axis=0 / 1 

    0일때는 행 / 1일때는 열 기억하자

     

    244-245행

    깊은복사의 두번째방식이다.

    df4 = df.copy()로 설정해준다.

     

    251-254행

    drop의 제거방법과 달리

    del df4['컬럼명'],df['컬럼명2']를 사용해서

    두가지의 컬럼을 동시에 제거해줄수있다.

     

    256-260행

    drop를 이용해서

    두가지이상의 컬럼을 동시에 제거해주는 방법이다.

     

    조회를 하는 여러가지방법들이다.

    순서를가지고, 인덱스를 가지고 조회를 할수있다.

    한가지 인덱스에대해 여러가지 컬럼을 조회할수도있다.

     

    311행-318행

    313행

    pandas모듈을 통해

    pd.read_csv('파일경로')

    csv파일을 파일의경로를설정하면 불러올 수 있다.

    불러온 파일에대해

    info() : 간략한 정보

    head() :상위 5건을 조회할수있다

    tail(): 하위 5건을 조회할수있다.

     

    329행-331행

     

    기존 이러한형태를

     장소         LON        LAT
    0        제주국제공항  126.496217  33.505314
    1           돔베돈  126.526687  33.516084
    2          공룡랜드  126.433153  33.442382
    3        협재해수욕장  126.240463  33.404218
    4          한림공원  126.239262  33.390101
    5          유리의성  126.273744  33.315127
    6       오설록티뮤지엄  126.289451  33.306537
    7       테디베어뮤지엄  126.408691  33.267972
    8       저녁_오성식당  126.414549  33.256059
    9        중문관광단지  126.412361  33.249186
    10  숙소_서귀포KAL호텔  126.580954  33.248020

     

    set_index('컬럼명',inplace=True)로 인덱스로 변경시킬 수 있다.

    LON        LAT
    장소                                
    제주국제공항       126.496217  33.505314
    돔베돈          126.526687  33.516084
    공룡랜드         126.433153  33.442382
    협재해수욕장       126.240463  33.404218
    한림공원         126.239262  33.390101
    유리의성         126.273744  33.315127
    오설록티뮤지엄      126.289451  33.306537
    테디베어뮤지엄      126.408691  33.267972
    저녁_오성식당      126.414549  33.256059
    중문관광단지       126.412361  33.249186
    숙소_서귀포KAL호텔  126.580954  33.248020

     

    357-362행

    현재데이터 df데이터의 내용을 새로운 csv파일로 저장할수있다(다른이름으로 저장)

    df.to_csv('새파일이름',index=False) ->인덱스가 파일에추가되지않는다.

    df.to_csv('새파일이름') index를 기술하지않으면 기본값인 True가 들어가 인덱스가 포함된다.

     

    377-379행

    data폴더의 sales._2015.xlsx 파일을 읽어온다

    그중 january_2015시트만 읽어오며 컬럼은 설정하지않는다.

    sheet_name=None을 기술하면 모든시트 데이터를 가져온다.

     

    394-396행

    현재 df는 모든시트의 정보를 가지고있다.

    df는 딕셔너리 객체이다.

    반복문을통해 name에는 시트의 이름 

    data에는 해당시트의 데이터들을 출력해준다.

     

    outexcel에 새로운 파일을 생성할때에 경로를 설정해둔다.

    df500의 데이터와 data의 데이터를

    data/pd_sale_2015.xlsx파일에 저장하는데

    각각 2015_500시트의 이름과 2015시트의 이름으로

    나눠서 설정해주었다.

     

    마지막으로 outexcel.save()를 통해 해당 값들을 담은 엑셀파일을 저장/생성된다.

     

     

    엑셀파일들을 파이썬으로 읽어와서

    행,열에 원하는값을 조회 , 수정 , 삭제하는 여러가지 방법들에대해 배웠다.

    또한 원하는 데이터들을 새로운 엑셀파일로 저장하는 방법도 학습했다.

    728x90

    댓글

Designed by Tistory.