본문 바로가기
IT/개발

파이썬 1주차 개발일지 (12/20~12/26)

by 멍치킨 2021. 12. 27.

파이썬 과정은 나중에 몰아 들어도 되지만 1주 차 진도는 맞춰 끝내 놓고 싶어서 어제(12/26) 하루만에 부랴부랴 들어봄

파이썬은 재밌다고 평을 들어서 룰루랄라 시작했는데 재밌지만 뭔가 짜증남;..

데이터 불러오는 것까지 okay.

묶는거 갸웃. 데이터 정렬?. 그래프 일단갠춘...

 

메모장 되새김질(웹 개발보다 자세히 쓴 것 무엇,,,)

1주 차

장점: 계속해서 많은 전처리와 데이터 분석을 하는 것

단점: 같은 프로세스로 계속 데이터 분석함

-파이썬과 데이터 분석 환경

-Pandas 파이썬으로 데이터 분석을 하면서 가장 많이 쓰는 도구

-Matplotlib 데이터를 분석하고 그 결과를 시각화하는 도구

-실제 데이터 분석 방법

 

파이썬을 설치한다 - 번역팩

아나콘다 - 데이터 분석을 위한 도구 모음

파이썬 라이브러리 - 파이썬 언어로 도구들을 만들어 놓은 것

런치패드 command+스페이스바 launchpad검색

 

03. 파이썬 기초 문법 - (1) 

🔎변수 - 데이터를 저장할 수 있는 공간

변수 입력 후 실행 - Run버튼 or Shift+Enter

equal(=) 오른쪽에 있는 데이터를 왼쪽 변수에 대입해준다.

🔎자료형 - 1. 숫자형 2. 문자열 3. 참/거짓

num = 12 name = 'Harry' number_status = True

자료 구조 - 1. 리스트(List) 2. 딕셔너리(Dictionary) 3. 집합(Set)

1. 리스트 - 순서가 있고 그 아래에 리스트로 추가할 수 있음 ex) 웨이팅 리스트, 합격 명단  

waiting_list = []

waiting_list.append('아무개')

*꿀팁: 두 글자 정도 치고 tap키 누르면 자동 완성됨, a키 누르면 칸 추가

2. 딕셔너리 - 어떤 키 값에 밸류를 넣어 줌 ex) 영한사전

eng_kor_dict = {}

eng_kor_dict = {'apple': '사과', 'pear':'배'}

3. 집합 - 중복된 데이터는 제거되고 집합으로만 떨어짐

group1 = set([1,2,3,4,2,1])

group1

교집합(&) , 합집합(|)

 

04. 파이썬 기초 문법 - (2)

🔎조건문 if

age = 17 

if age >= 20:

    print("성인입니다")

else:

    print("청소년이에요")

 

age = 65

 

if age > 80:

    print("아직 정정하시군요")

elif age > 60:

    print("인생은 60부터!")

else:

    print("아직어려요!")

elif(else if)

파이썬은 if문이 해당하는 코드 print문이 어디까지 출력이 돼야 되는지를 공백(indentation)으로 알려줌 (띄어쓰기 4칸)

🔎반복문 for

fruits = ['사과', '배', '감', '귤']

 

for fruit in fruits:

    print(fruit)

 

fruits = ['사과', '배', '감', '귤', '수박', '딸기', '사과', '배']

 

count = 0

 

for fruit in fruits:

    if fruit == '사과':

        count = count + 1

count

🔎함수- 어떤 입력 값을 넣고 안에서 동작을 한 다음에 그 결과가 나오는 것 (무엇이 들어가서 동작한 다음에 값이 나온다) *소괄호()만 써야 됨

*data는 리스트이기 때문에 대괄호[] 써야 함, 딕셔너리도 대괄호[]

def sum(a, b):

    return a + b

 

sum(3, 4)

sum(3, 5)

 

def print_name(name):

    print("반갑습니다 " + name + "님")

    

print_name("아무개")

 

 

Pandas

관계형 데이터 다룸

Import 가져온다 pandas

import pandas as pd

별표시*뜨면 불러오는 중임

내 위치는 ./로 나타냄

pd.read_csv('./data/chicken_07.csv')

chicken07 = pd.read_csv('./data/chicken_07.csv')

chicken07.describe()

Count 개수

Mean 평균값

Std 표준편차

Min 최솟값 

Max 최댓값

 

chicken07['성별']

중복제거 - set(chicken07['성별']) 

Len - length 길이를 알려 주는 함수

set(chicken07['성별']), len(set(chicken07['성별']))

 

chicken_data = pd.concat([chicken07,chicken08,chicken09])

chicken_data = chicken_data.reset_index(drop= True)

chicken_data

 

Matplotlib

그래프 그려서 시각화

import matplotlib.pyplot as plt

요일별 총 통화건수 - sum_of_calls_by_week = chicken_data.groupby('요일')['통화건수'].sum()

sum_of_calls_by_week

 

plt.figure(figsize=(8,5))

plt.bar(sum_of_calls_by_week.index, sum_of_calls_by_week)

plt.title('요일에 따른 치킨 주문량 합계')

plt.show()

plt.rcParams['font.size']

plt.rcParams['font.family'] 폰트 글자체

plt.rcParams['font.family'] = "Malgun Gothic" 맥은 맑은고딕없음

plt.rcParams['font.family'] = "AppleGothic"

 

그래프 입맛대로 바꿔보기

Chaining 개념 sum_of_calls_by_week = chicken_data.groupby('요일')['통화건수'].sum()

 

groupdata = chicken_data.groupby('요일')

call_data = groupdata['통화건수']

sum_of_calls_by_week = call_data.sum()

sorted_sum_of_calls_by_week = sum_of_calls_by_week.sort_values(ascending=True)

sorted_sum_of_calls_by_week

 

plt.figure(figsize=(8,5))

plt.bar(sorted_sum_of_calls_by_week.index, sorted_sum_of_calls_by_week)

plt.title('요일에 따른 치킨 주문량 합계')

plt.show()

 

요일별 -  weeks = ['월', '화', '수', '목', '금', '토', '일']

sum_of_calls_by_weeks = chicken_data.groupby('요일')['통화건수'].sum().reindex(weeks)

sum_of_calls_by_weeks

 

plt.figure(figsize=(8,5))

plt.bar(sum_of_calls_by_weeks.index, sum_of_calls_by_weeks)

plt.title('요일에 따른 치킨 주문량 합계')

plt.show()

 

빠른 버전 -

sum_of_calls_by_age = chicken_data.groupby('연령대')['통화건수'].sum()

sum_of_calls_by_age

 

자세한 버전 -

groupdata = chicken_data.groupby('연령대')

call_data = groupdata['통화건수']

sum_of_calls_by_age = call_data.sum()

sum_of_calls_by_age

 

정렬 -

groupdata = chicken_data.groupby('연령대')

call_data = groupdata['통화건수']

sum_of_calls_by_age = call_data.sum()

sorted_sum_of_calls_by_age = sum_of_calls_by_age.sort_values(ascending= True)

sorted_sum_of_calls_by_age

 

그래프 -

plt.figure(figsize=(8,5))

plt.bar(sorted_sum_of_calls_by_age.index, sorted_sum_of_calls_by_age)

plt.xlabel('연령대')

plt.title('연령대별 치킨 전체 주문량')

plt.show()

 

groupdata = chicken_data.groupby('시군구')

call_data = groupdata['통화건수']

sum_of_calls_by_city = call_data.sum()

sorted_sum_of_calls_by_city = sum_of_calls_by_city.sort_values(ascending=False)

sorted_sum_of_calls_by_city

ascending에 True, False가 있음

 

plt.figure(figsize=(10,5))

plt.bar(sorted_sum_of_calls_by_city.index, sorted_sum_of_calls_by_city)

plt.xlabel('지역별')

plt.xticks(rotation = 45)

plt.show()

rotation 기울기

 

헷갈리고 어려움. 

  1. 데이터를 불러오고 - 
  2. 불러온 데이터를 기준에 맞게 묶고 - 
  3. 묶은 데이터를 정렬하고 - 
  4. 정렬한 데이터를 그래프로 그리고 -
  5. 그래프에서 의미를 찾는 과정을 반복하면 익혀진다 함.