Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 인구 조사 데이터 분석

<시간/>

인구 조사는 주어진 인구에 대한 정보를 체계적으로 기록하는 것입니다. 캡처된 데이터에는 인구 통계, 경제, 거주 세부 정보 등과 같은 다양한 범주의 정보가 포함됩니다. 이는 궁극적으로 정부가 현재 시나리오를 이해하고 미래를 계획하는 데 도움이 됩니다. 이 기사에서는 Python을 활용하여 인도 인구에 대한 인구 조사 데이터를 분석하는 방법을 살펴보겠습니다. 다양한 인구통계학적 및 경제적 측면을 살펴보겠습니다. 그런 다음 그래픽 방식으로 분석을 투영할 전하를 플롯합니다. kaggle에서 수집한 소스입니다. 이곳에 있습니다.

데이터 구성

아래 프로그램에서 먼저 짧은 파이썬 프로그램을 사용하여 데이터를 얻습니다. 추가 분석을 위해 데이터를 pandas 데이터 프레임에 로드하기만 하면 됩니다. 출력은 더 간단한 표현을 위해 일부 필드를 보여줍니다.

예시

import pandas as pd
datainput = pd.read_csv('E:\\india-districts-census-2011.csv')
#https://www.kaggle.com/danofer/india-census#india-districts-census-2011.csv
print(datainput)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

      District code ... Total_Power_Parity
0                 1 ...               1119
1                 2 ...               1066
2                 3 ...                242
3                 4 ...                214
4                 5 ...                629
..              ... ...                ...
635             636 ...              10027
636             637 ...               4890
637             638 ...               3151
638             639 ...               3151
639             640 ...               5782

[640 rows x 118 columns]

두 상태 간의 유사성 분석

이제 데이터를 수집했으므로 두 국가 간의 다양한 전선에서 유사성을 분석할 수 있습니다. 유사성은 연령 그룹, 컴퓨터 소유, 주택 가용성, 교육 수준 등을 기반으로 할 수 있습니다. 아래 예에서 우리는 Assam 및 Andhra Pradesh라는 두 주를 사용합니다. 그런 다음similarity_matrix를 사용하여 두 상태를 비교합니다. 모든 데이터 필드는 두 주에서 가능한 각 구역 쌍에 대해 비교됩니다. 결과 히트맵은 이 두 가지가 얼마나 밀접하게 관련되어 있는지 나타냅니다. 관련성이 가까울수록 음영이 짙어집니다.

예시

import pandas as pd
import matplotlib.pyplot as plot
from matplotlib.colors import Normalize
import seaborn as sns
import math
datainput = pd.read_csv('E:\\india-districts-census-2011.csv')
df_ASSAM = datainput.loc[datainput['State name'] == 'ASSAM']
df_ANDHRA_PRADESH = datainput.loc[datainput['State name'] == 'ANDHRA PRADESH']
def segment(x1, x2):
   # Set indices for both the data frames
   x1.set_index('District code')
   x2.set_index('District code')
   # The similarity matrix of size len(x1) X len(x2)
   similarity_matrix = []
   # Iterate through rows of df1
   for r1 in x1.iterrows():
      # Create list to hold similarity score of row1 with other rows of x2
      y = []
      # Iterate through rows of x2
      for r2 in x2.iterrows():
         # Calculate sum of squared differences
         n = 0
         for c in list(datainput)[3:]:
            maximum_c = max(datainput[c])
            minimum_c = min(datainput[c])
            n += pow((r1[1][c] - r2[1][c]) / (maximum_c - minimum_c), 2)
         # Take sqrt and inverse the result
         y.append(1 / math.sqrt(n))
      # Append similarity scores
      similarity_matrix.append(y)
   p = 0
   q = 0
   r = 0
   for m in range(len(similarity_matrix)):
      for n in range(len(similarity_matrix[m])):
         if (similarity_matrix[m][n] > p):
            p = similarity_matrix[m][n]
            q = m
            r = n
   print("%s from ASSAM and %s from ANDHRA PRADESH are most similar" % (x1['District name'].iloc[q],x2['District name'].iloc[r]))
   return similarity_matrix
m = segment(df_ASSAM, df_ANDHRA_PRADESH)
normalization=Normalize()
s = plot.axes()
sns.heatmap(normalization(m), xticklabels=df_ANDHRA_PRADESH['District name'],yticklabels=df_ASSAM['District name'],linewidths=0.05,cmap='Oranges').set_title("similar districts matrix of assam AND andhra_pradesh")
plot.rcParams['figure.figsize'] = (20,20)
plot.show()

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

Python에서 인구 조사 데이터 분석 

특정 매개변수 비교

이제 특정 매개변수와 관련하여 장소를 비교할 수도 있습니다. 아래 예에서는 경운기 작업자가 사용할 수 있는 가정용 컴퓨터의 가용성을 비교합니다. 각 상태에 대한 이 두 매개변수 간의 비교를 보여주는 그래프를 생성합니다.

예시

import pandas as pd
import matplotlib.pyplot as plot
from numpy import *

datainput = pd.read_csv('E:\\india-districts-census-2011.csv')
z = datainput.groupby(by="State name")
m = []
w = []
for k, g in z:
   t = 0
   t1 = 0
   for r in g.iterrows():
      t += r[1][36]
      t1 += r[1][21]
   m.append((k, t))
   w.append((k, t1))
mp= pd.DataFrame({
   'state': [x[0] for x in m],
   'Households_with_Computer': [x[1] for x in m],
   'Cultivator_Workers': [x[1] for x in w]})

d = arange(35)
wi = 0.3
fig, f = plot.subplots()
plot.xlim(0, 22000000)
r1 = f.barh(d, mp['Cultivator_Workers'], wi, color='g', align='center')
r2 = f.barh(d + wi, mp['Households_with_Computer'], wi, color='b', align='center')
f.set_xlabel('Population')
f.set_title('COMPUTER PENETRATION IN VARIOUS STATES W.R.T. Cultivator_Workers')
f.set_yticks(d + wi / 2)
f.set_yticklabels((x for x in mp['state']))
f.legend((r1[0], r2[0]), ('Cultivator_Workers', 'Households_with_Computer'))
plot.rcParams.update({'font.size': 15})
plot.rcParams['figure.figsize'] = (15, 15)
plot.show()

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

Python에서 인구 조사 데이터 분석