ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 데이터 분석 특강 정리2
    Study/Python 2021. 6. 30. 20:19

    #  numpy를 이용해 궁금한 지역의 인구 데이터 출력

    import numpy as np

    import csv

    import matplotlib.pyplot as plt

     

    f = open('age.csv')

    data = csv.reader(f)

    next(data)

    name = input('인구 구조가 알고싶은 지역의 이름을 입력 : ')

     

    #for row in data:

    #    for i in range(len(row)):

    #        if ',' in row[i]:

    #            row[i] = row[i].replace(',', '')

     

    for row in data :

        if name in row[0] :

            home = np.array(row[3:], dtype=int) / int(row[2]) # 전체 인구 중 각 연령대 비율

     

    plt.rc('font', family='Malgun Gothic')

    plt.title(name + ' 지역의 인구 구조')

    plt.plot(home)

    plt.show()

     

    -

     

    #  입력한 지역과 유사한 인구 구조를 가진 지역의 그래프 출력

    import numpy as np

    import csv

    import matplotlib.pyplot as plt

     

    #  데이터 읽어오기

    f = open('age.csv')

    data = csv.reader(f)

    next(data)

    data = list(data)

     

    # 궁금한 지역의 이름 입력

    name = input('인구 구조가 알고싶은 지역의 이름을 입력 : ')

    mn = 1

    result_name = ''

    result = 0

     

    #for row in data:

    #    for i in range(len(row)):

    #        if ',' in row[i]:

    #            row[i] = row[i].replace(',', '')

     

    # 지역의 인구 구조 저장

    for row in data :

        if name in row[0] :

            home = np.array(row[3:], dtype=int) / int(row[2].replace(',', ''))  # 전체 인구 중 각 연령대 비율

     

    # 해당 인구 구조와 가장 비슷한 인구 구조를 가진 지역 찾기

    for row in data :

        away = np.array(row[3:], dtype=int) / int(row[2].replace(',', ''))

        s = np.sum((home - away) ** 2)

        if s < mn and name not in row[0] :  # 입력한 지역은 아니면서 가장 비슷한 것 찾기

            mn = s

            result_name = row[0]

            result = away

     

    # 시각화

    plt.rc('font', family='Malgun Gothic')

    plt.title(name + ' 지역과 가장 비슷한 인구 구조를 가진 지역')

    plt.plot(home, 'r.:', label = name)

    plt.plot(result, color='pink', label = result_name)

    plt.legend()

    plt.show()

     

    -

     

    import pandas as pd

     

    # 위키피디아에서 제공하는 올림픽 메달 데이터 가져오기

    df = pd.read_html('https://en.wikipedia.org/wiki/All-time_Olympic_Games_medal_table', header=0, index_col=0)

    summer = df[1].iloc[:, :5]

    summer.columns = ['경기수', '금', '은', '동', '계']

    summer = summer.sort_values('금', ascending=False)  # 내림차순 정렬

    summer

     

    -

     

    import pandas as pd

    import numpy as np

     

    index = pd.date_range('1/1/2000', periods=8)  # 날짜 형태로 된 8개의 인덱스 만들기

    print(index)

     

    # numpy를 이용해 랜덤 데이터에 인덱스, 컬럼 이름 설정된 데이터 프레임 생성

    df = pd.DataFrame(np.random.rand(8, 3), index=index, columns=list('ABC'))

    print(df['B']) # B에 해당하는 부분만 출력

     

    -

     

    print(df['B'] > 0.4)

    df2 = df[df['B'] > 0.4]

    df2

     

    -

     

    df['D'] = df['A'] / df['B']  # A열 값을 B열 값으로 나눈 값을 D열에 저장

    df

     

    -

     

    df['E'] = np.sum(df, axis=1)  # 모든 열을 다 더한 값을 E열에 저장. 행 우선 계산

    df

     

    -

     

    df = df.div(df['C'], axis=0)  # 모든 값을 C열의 값으로 나눈 뒤

    df.to_csv('test.csv')  # csv파일로 저장

    df

Designed by Tistory.