본문 바로가기
study/Python

[Python] 40. Test 답

by 금이패런츠 2022. 6. 29.
728x90
반응형
# -*- coding: utf-8 -*-
"""
Created on Wed Jun 29 13:58:37 2022

@author: KITCOOP
test0629_A.py
"""
'''
1. age.csv 파일에서 해당 지역의 인구비율과 전체지역의 인구 비율을 함께  
   그래프로 작성하기
'''
import numpy as np
import csv
import matplotlib.pyplot as plt
import re
f =open('data/age.csv')
data = csv.reader(f)
next(data) 
data=list(data) 
name='역삼' 
homelist=[]
namelist=[] 
for row in data :
     if row[0].find(name) >= 0 :
        print(name,"===",row[0],":",row[0].find(name))
        row = list(map((lambda x:x.replace(",","")),row))
        homelist.append \
            (np.array(row[3:], dtype =int) / int(row[2]) *100) 
        namelist.append(re.sub('\(\d*\)', '', row[0]))
        alldata = np.array(row[3:], dtype =int) / int(row[2])*100

#전체 지역의 데이터 alldata에 저장
for row in data :
    row = list(map((lambda x:x.replace(",","")),row))
    away = np.array(row[3:], dtype = int) / int(row[2]) *100
    if np.isnan(away).any() :  #away 데이터셋에 한개라도NA값이 존재하면 
        continue    #반복문의 처음으로 
    alldata = np.vstack((alldata,away))  #행을 기준으로 연결

#연령별 인구수/전체인구수 평균값
alldata = alldata.mean(axis=0)  #열별 평균
plt.style.use('ggplot')
plt.figure(figsize = (10,5), dpi=100)
plt.rc('font', family ='Malgun Gothic')
for h,n in zip(homelist,namelist) :
    plt.plot(h,label=n) 
plt.plot(alldata, label="전체")
plt.xlabel("나이")    
plt.ylabel("비율(%)")    
plt.legend()
plt.show()
plt.savefig("20220629-1.png",dpi=400,bbox_inches="tight")

'''
2. supplier_data.csv 파일을 pandas를 이용하여 읽고 
 ["1/20/14","1/30/14"] 일자 데이터만 화면에 출력하기
'''
import pandas as pd

infile='data/supplier_data.csv'
df = pd.read_csv(infile)
print(df);
print(df.info());
importdate = ["1/20/14","1/30/14"]
df_inset = df.loc[df["Purchase Date"].isin(importdate),:]
print(df_inset)

'''
3.  supplier_data.csv 파일 데이터에서 Invoice Number가 920으로
 시작하는 레코드만 화면에 출력하기
''' 
infile='data/supplier_data.csv'
df = pd.read_csv(infile)
print(df["Invoice Number"].str.startswith("920"))
df_inset = df.loc[df["Invoice Number"].str.startswith("920"),:]
print(df_inset)

'''
4. sales_2013.xlsx 파일 중 Purchase Date 컬럼의 값이 
"01/24/2013"과 "01/31/2013" 인 행만 sales_2013_01.xlsx 파일로 저장하기
 isin 함수 사용.
'''
import pandas as pd
infile="data/sales_2013.xlsx"
outfile = "data/sales_2013_01.xlsx"
df = pd.read_excel(infile,"january_2013")
print(df.info())
print(df.head())
select_date = ['01/24/2013','01/31/2013']
#select_date = ['2013-01-24','2013-01-31']
df_value = df[df['Purchase Date'].isin(select_date)]
df_value
print(df_value.info())
writer = pd.ExcelWriter(outfile)
df_value.to_excel(writer,sheet_name="jan_13_output",index=False)
writer.save()

'''
5. seaborn 모듈의 titanic 데이터를 이용하여 클래스별 
 생존 인원을 출력하시오
''' 
import seaborn as sns
titanic = sns.load_dataset('titanic')
titanic.groupby(['class']).survived.sum()
titanic.groupby(['class']).survived.count()
728x90
반응형