import pandas as pd
index = pd.date_range('1/1/2000', periods=8)
print(index)
#DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03', '2000-01-04', '2000-01-05', '2000-01-06', '2000-01-07', '2000-01-08'], dtype='datetime64[ns]', freq='D')
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(8,3), index=index, columns=list('ABC'))
df
print(df['B'])
print(df['B'] > 0.4)
import pandas as pd
import numpy as np
index = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.rand(8,3), index=index, columns=list('ABC'))
df2 = df[df['B']>0.4]
df2
df2.T #데이터 프레임 뒤집기
🌼 행 우선 계산 vs 열 우선 계산
- 행 우선 계산을 기본으로 함
- 열 방향 축 계산 : axis = 1
import pandas as pd
import numpy as np
index = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.rand(8,3), index=index, columns=list('ABC'))
df['D'] = df['A'] / df['B']
df
import pandas as pd
import numpy as np
index = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.rand(8,3), index=index, columns=list('ABC'))
df['D'] = df['A'] / df['B']
df['E'] = np.sum(df, axis=1)
df.head()
df['E'] = np.sum(df, axis=1)
: 행 기준으로 합산 후 E라는 열 생성df.head()
: 첫 5줄만 출력import pandas as pd
import numpy as np
index = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.rand(8,3), index=index, columns=list('ABC'))
df['D'] = df['A'] / df['B']
df['E'] = np.sum(df, axis=1)
df = df.sub(df['A'], axis=0)
df.head()
df = df.sub(df['A'], axis=0)
: A열 기준으로 전체 데이터 뺄셈import pandas as pd
import numpy as np
index = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.rand(8,3), index=index, columns=list('ABC'))
df['D'] = df['A'] / df['B']
df['E'] = np.sum(df, axis=1)
df = df.sub(df['A'], axis=0)
df = df.div(df['C'], axis=0)
df.to_csv('test.csv')
df.head()
df = df.div(df['C'], axis=0)
: 전체 데이터를 C열 기준으로 나눔.df.to_csv('test.csv')
: 데이터프레임에 대한 csv 파일이 저장됨🌼알고리즘
1. 데이터 읽어오기
1.1) 전체 데이터를 총 인구수로 나누어 비율 구함
1.2) 총 인구수와 연령구간 인구 수 삭제
2. 알고 싶은 지역 입력 받기
3. 해당 지역 인구 구조 저장
4. 해당 지역과 가장 비슷한 인구구조를 가진 지역 찾기
4.1) 전국 모든 지역 중 한 곳 선택
4.2) 입력 받은 지역의 0세 인구 비율 - 선택된 지역의 0세 인구비율
4.3) 100세 이상 인구비율까지 계산 후 계산된 값 제곱 더하기
4.4) 전국 모든 지역에 대해 반복 후 가장 차이가 적은 지역 선택
5. 두 지역 시각화
import pandas as pd
import numpy as np
df = pd.read_csv('people.csv', index_col=0)
df
import pandas as pd
import numpy as np
df = pd.read_csv('people.csv', index_col=0)
df = df.div(df['총인구수'], axis=0) #전체 데이터를 총인구수로 나누어 비율을 구함
del df['총인구수'], df['연령구간인구수'] # 필요 없는 두 열 삭제
df
import pandas as pd
import numpy as np
df = pd.read_csv('people.csv', index_col=0)
df = df.div(df['총인구수'], axis=0)
del df['총인구수'], df['연령구간인구수']
name = input('원하는 지역?')
a = df.index.str.contains(name) #해당 문자가 있는 행 찾음
df2 = df[a]
df2
df.index.str.contains(name)
: 데이터 프레임의 인덱스 문자열에 원하는 문자가 있는 행 찾아냄import pandas as pd
import numpy as np
df = pd.read_csv('people.csv', index_col=0)
df = df.div(df['총인구수'], axis=0)
del df['총인구수'], df['연령구간인구수']
name = input('원하는 지역?')
a = df.index.str.contains(name)
df2 = df[a]
df2
import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
df2.T.plot()
plt.show()
x = df.sub(df2.iloc[0], axis=1) # 전체지역에서 해당지역의 열과 뺄셈
y = np.power(x, 2) # 해당값 제곱
z = y.sum(axis=1) #제곱한 값들을 합산
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv('people.csv', index_col=0)
df = df.div(df['총인구수'], axis=0)
del df['총인구수'], df['연령구간인구수']
plt.rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False
name = input('원하는 지역?')
a = df.index.str.contains(name)
df2 = df[a]
x = df.sub(df2.iloc[0], axis=1) # 전체지역에서 해당지역의 열과 뺄셈
y = np.power(x, 2) # 해당값 제곱
z = y.sum(axis=1) #제곱한 값들을 합산
i = z.sort_values().index[:4] # 값들의 차이가 가장 적은 지역 5개만 추출
df.loc[i].T.plot()
# df.loc[np.power(df.sub(df2.iloc[0], axis=1), 2).sum(axis=1).sort_values().index[:5]].T.plot()
plt.show()