목록개발 (55)
개발은 처음이라 개발새발
지난 편에서는 21/22시즌 그라운드와 공중볼 경합 탑10을 확인해봤는데요. 이어서 지난 시즌 가장 많은 경기당 크로스 성공 개수와 그 선수들의 크로스 성공%를 한번 확인해보도록하겠습니다. #총 크로스 횟수가 50회 이상인 선수만 추리기 df2 = df1[df1['totalCross'] > 50].sort_values(by=['totalCross'], ascending=False) print(df2) #경기당 크로스 성공 개수 계산 df2['per_game_cross'] = round(df2['accurateCross'] / df2['game'],2) # 크로스 성공% 계산 df2['cross%'] = round((df2['accurateCross'] /df2['totalCross'])*100,2) #2..
오늘은 책 한권을 소개해볼까 합니다. 데이터 분석을 하는 데 있어서 파이썬도 중요하지만 데이터를 저장하고 관리하는 것도 매우 중요한대요. 그러기 위해서는 DBMS라고 하는 데이터베이스를 관리하고 운영하는 시스템 공부도 중요합니다. 그래서 소개해 드릴 책은 그중에서 가장 기본서라고 할 수 있는 "이것이 MySQL이다"라는 책입니다. 저는 올해 들어서 파이썬과 판다스 공부를 열심히 하고 있는데요. SQL에 대해서 아주 모르는 것은 아니지만 좀 더 역량을 쌓기 위해서 하반기부터는 이것이 MySQL이다를 통해 SQL 공부도 열심히 해서 포스팅을 남겨보려 합니다. https://book.naver.com/bookdb/book_detail.nhn?bid=16345347 이것이 MySQL이다 - 『이것이 MySQL이..
오랜만입니다. 오늘은 데이터분석에서 가장 중요한 정규화 작업에 대해 알아보도록하겠습니다. 정규화는 여러 열의 데이터가 들어 있을 때 모든 열의 데이터의 단위가 동일하면 더할나위 없이 좋지만 저희에겐 그런 행운은 없기에 단위가 서로 다른 열을 가지고 머신러닝을 하게 되면 머신러닝 분서 결과가 달라질 수 있습니다. 그렇기에 숫자 데이터간의 상대적인 크기 차이를 제거해 각 열에 속하는 데이터 값을 동일한 크기 기준으로 나눈 비율로 나타내는데 이를 두고 정규화(normalization)이라고 합니다. 정규화를 거친 데이터의 범위는 0~1 또는 -1~1이 됩니다. 정규화 작업중 기본적인 방법으로는 해당 열의 데이터를 열의 최대값의 절대값으로 나누는 방법이 있습니다. 이렇게 되면 가장 큰 값은 자기 자신과 나눈 것..
이번 시간은 누락 데이터를 제거하는 것이 아니라 치환하는 작업을 진행하겠습니다. 데이터 분석의 품질을 높이기 위해서는 결측치가 많은 데이터를 제거하는 것도 방법이지만 데이터의 양이 품질을 결정하기도 하기 때문에 무작정 제거하기보다는 평균데이터로 누락 데이터를 치환하는 작업도 알아두면 좋습니다. 데이터를 치환하는 방법은 우선 mean()함수를 통해 데이터의 평균을 구한 뒤 fillna()함수로 결측치를 채우는 방법이 있습니다. 코딩을 진행해 보겠습니다. import pandas as pd import numpy as np df= pd.read_excel("판다스호.xlsx", sheet_name="Sheet1") print(df) mean_age = df['나이'].mean(axis=0) print('\n..
안녕하세요. 지난 번에는 아놀드의 데이터를 다뤄봤다면, 이번에는 조금 더 재밌는 지도 그리기를 해볼까 합니다. 파이썬에는 'Folium'이라는 라이브러리가 있는데요. 이를 통해서 지도에 다양한 시각화 요소를 넣을 때 굉장히 유용하게 쓸 수 있는 라이브러리 입니다. 저는 이를 가지고 다가올 22/23시즌 프리미어리그 20팀의 홈구장이 표시된 지도를 만들어보려고 하는데요. 이를 위해서는 먼저 홈구장 마커를 찍을 잉글랜드 지도가 먼저 필요합니다. 우선 코드를 보시겠습니다. import pandas as pd import folium df= pd.read_excel('PL.xlsx',sheet_name='Sheet1',index_col=0) print(df) #잉글랜드 지도 만들기 England_map = fo..
데이터를 다루다 보면 중복행이 종종 보이는 경우가 있습니다. 가공 작업을 진행하는 입장에서 표본이 적은 상황에서는 가볍게 엑셀에서 지워도 무방합니다. 하지만 세상 일이라는 게 그리 호락호락하지 않죠. 최근 겪을 일을 이야기해보자면 새로운 게임 스탯을 만들기 위해 분석하는 과정에서 행이 20만 개가 넘는 데이터를 다룰 때였습니다. 처음에는 중복된 것이 없는 줄 알았는데 특정 부분이 지나지체 많다 싶어 확인해보기 무려 3만 개가 넘는 중복행이 있던군요. ㅠㅠ 정말 막막했는데 판다스에서 간단한 코드를 해결할 수 있었습니다. 우선 예제를 만들어보겠습니다. import pandas as pd dict_data = {'goal':[23,23,2,1,15,17,23], 'assist':[7,13,12,7,8,9,7]..
저는 종종 취미로 스포츠 데이터를 모으는 것을 합니다. 그럴 때 주로 크롤링을 통해 데이터를 수집하는데요. 대부분의 기록 사이트가 오픈돼 있기 때문에 로그인이 필요하지 않지만 가끔 크롤링할 기록실 링크를 직접 넣어도 반드시 로그인을 수반해야 되는 경우가 있습니다. 그럴 때 어떻게 로그인을 해결하는지 네이버를 예시로 한번 진행해 보도록하겠습니다. *** 셀레니움으로 네이버 축구 순위 크롤링 1편 - https://data-so-hard.tistory.com/9?category=976315 2편 - https://data-so-hard.tistory.com/10?category=976315 3편 - https://data-so-hard.tistory.com/11?category=976315 4편 - http..
지난 시간에는 df.plot()을 이용해 여러 그래프를 그려봤는데요. 이번 시간에는 또다른 그래프 라이브러리인 maplotlib를 활용해 그래프를 그려보겠습니다. matplotlib는 "파이썬의 표준 시각화 도구"라고 부를 수 있을 정도로 평면 그래프와 관련해 다양한 포맷과 기능을 지원합니다. 또한 객체지향 프로그래밍을 지원해 그래프 요소를 세세하게 꾸밀 수 있는 장점 또한 가지고 있습니다. matplotlib 설명은 여기까지 하고 본격적으로 matplotlib를 이용해 그래프를 그려 보도록하겠습니다. matplotlib를 실행시키기 위해서는 import를 해야 겠죠? 이번에 활용할 데이터프레임은 시도별 전출입 인구수입니다. 코드를 진행해보겠습니다. import pandas as pd import mat..
반복문을 활용한 합을 구하는 문제입니다. 문제를 쭉 읽어보면 n이라는 숫자가 주어졌을 때 1부터 n까지의 합산을 반복문을 통해 구해보라는 것인데요. 예제 1의 3을 입력했더니 출력이 6이 나오는 것을 감안했을 때 "1 + 2 + 3 = 6" 을 의미하는 것을 알 수 있습니다. 그렇다면 일단 n의 변수를 만들어야 겠죠? input() 함수를 활용할 것이고 연산을 해야 하기 때문에 int를 씌어야 합니다. 코드를 진행해 보겠습니다. n = int(input()) 변수 n을 만들었으니 반복문을 작성하기 전에 또 하나 만들어야 할게 있습니다. n은 어디까지나 반복문의 범위를 지정해주는 변수이기 때문에 반복문을 통해 더해질 변수를 하나더 적어야 합니다. 그 변수는 반복문을 통해 처음 더해졌을 때 1이 되어야 하니..
1, 2편에서는 선그래프에 대해 배웠다면 이제는 그래프의 다양한 종류에 대해 알아보겠습니다. df.plot 매소드를 통해서 여러 그래프를 만들 수 있는데요. 판다스에 내장된 그래프 종류는 아래와 같습니다. 선 그래프는 df.plot()을 통해서 바로 나올 수 있지만, 다른 그래프 종류들은 그렇지 않습니다. 다른 그래프를 그리기 위해서는 괄호 안에 " kind = " 옵션을 추가해 적용해야 합니다. 지난 시간에 사용한 남북한 발전전량합계 자료를 가지고 막대 그래프를 한번 그려보겠습니다. 코드는 아래와 같습니다. import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel('./남북한발전전력량.xlsx', engine='openpyxl') #..