본문 바로가기

파이썬 100일 챌린지

[100일 챌린지] 파이썬 마스크 (mask) 기능은 무엇인가? #037 조건에 부합하는 데이터만 골라낸고 싶다면? IF도 있지만, 마스크(mask) 기능이면 간단하게 적용할 수 있다. 활용 방법은 간단하다. 대괄호 안에 부합하는 조건을 넣어주면 된다. 예시를 먼저 보자! 아래는 2015년 성씨, 본관별 Top 30이다. 여기서 사람이 1,000,000 이 넘는 성씨만 골라보고자 한다. data 옆 대괄호 안에 조건을 추가한다. data['2015'] > 1000000 data['2015']의 정보가 백만보다 크면 된다는 뜻이다. 위처럼 적용해보면~ 조건에 해당되는 데이를 쉽게 찾을 수 있다~ 더보기
[100일 챌린지] 파이썬 pandas 파이 차트 그리기 (옵션 추가) #036 아래 자료를 이용하여 파이 차트를 그려보겠다. 1. 파이 차트 그리기 pie 함수에 데이터를 넣어주면 된다. plt.pie() 2. 동그란 원 그리기 plt.axis('equal') 위 함수를 이용하면 원이 더 동그래진다. 3. 레이블 추가하기 파이 차트를 생성할 때, 레이블 옵션을 추가하면 된다. labes=[내용] tmi 지만 원래는 성 옆에 한자가 있었다. 한글과 한자를 모두 보여줄 수 있는 폰트를 못 찾아, 부득이하게 한글 성만 편집했다. 여유가 생기면 한글, 한자 모두 보여줄 수 있는 방법이 있는지 찾아보겠다. 4. 시작 각도 지정하기 파이 차트의 시작은 3시 방향이다. 그런데 시작 각도를 바꿀 수 있다. 3시 방향으로 왼쪽으로 몇 도를 이동할지 표시해 주면 된다. startangle=각도 5... 더보기
[100일 챌린지] 파이썬 pandas 엑셀로 저장, html 읽어오기 #035 1. 데이터 엑셀에 저장하기 엑셀 데이터를 가공하여 다른 이름으로 저장하고 싶다면? .to_excel("파일명") 간단하다!! 위의 데이터를 이용해서 원 그래프를 그려본다!!! 2. 웹 페이지 데이터 읽어오기 웹 페이지에서 데이터를 읽어오는 방법도 있다. 먼저 lxml 라이브러리를 설치해야 한다. cmd 창에서~ pip install lxml 음~ 읽어올만한 페이지가 없을까? 웹페이지 읽는 방법도 간단하다. pd.read_html('웹 페이지 주소') 위의 내용은 내가 여러번 수행해서 결과만 깔끔하게 나왔다. 처음에는 읽어오는 과정도 같이 보인다. 데이터가 많을 수록 오래걸리니 기다리면 된다. This function searches for elements and only for and rows and .. 더보기
[100일 챌린지] 파이썬 pandas 자료형 DataFrame 완전 정복 4탄 (sorting, 열 삭제, top) #034 통계청에서 새로운 데이터를 가지고 왔다. 위 내용을 읽어 원그래프를 그려보려 한다. 1. DataFrame 정렬 Sorting (ascending) 500개를 모두 사용할 수 없어, 30개만 추리려고 한다. 먼저 숫자를 내림차순 한다. .sort_values('칼럼명', ascending=False) 오름차순이라면 ascending에 True를 넣어주면 된다. 2. DataFrame 열 삭제 (drop) 첫 줄 '전국' 데이터는 쓰지 않을 것이다. 그래서 삭제를 해주어야 한다. .drop(인덱스) 인덱스 대신 칼럼명을 넣으면 칼럼 삭제도 가능하다. 3. DataFrame 상위 항목 호출, top (head) 이제 상위 항목 30개만 가지고 오면 된다. .head(숫자) 어쩌다 보니 DataFrame만 공.. 더보기
[100일 챌린지] 파이썬 막대그래프 나란히 그리기 (feat, plt) #033 막대그래프에서 2가지 정보를 활용하면 보면 아래처럼 그래프가 겹친다. 그래프를 나란히 그려보고 싶다. 그런데 쉽게 설정으로 되진 않고, 약간의 수작업이 필요하다. 개념은 이렇다. 1. '0 총지수' 그래프를 그려준다. 2. '06 보건' 그래프를 '0 총지수' 그래프 바로 옆에 그려준다. 이게 개념은 쉬운데, 바로 옆에 어떻게 그려주는 냐가 궁금하단 말이다... 1. x축 위치 초기화 x에 데이터의 칼럼의 수만큼 눈금을 생성한다. (np.array는 아래 링크에서 ㅋ) [100일 챌린지] 파이썬 numpy array (ndarray) 생성과 함수 모음 #023 w는 막대그래프의 너비도 설정한다. (이게 필요한 이유는 나중에...) 2. '0 총지수' 그래프 그리기 x축 위치마다 '0 총지수' 데이터가 y.. 더보기
[100일 챌린지] 파이썬 그래프 range 활용, xticks x축 눈금 설정 (feat, plt) #032 range는 파이썬의 기본 함수이며, 0~(n-1) 의 정수를 만든다. range는 위처럼 for문에서 이용하기도 하지만, 그래프에도 이용할 수 있다. 1. x축 눈금 설정하기 (xticks) xticks 함수에 대한 설명이다. Get or set the current tick locations and labels of the x-axis. x축 눈금 위치나 레이블을 설정해 줄 수 있다. plt.xticks(눈금, 눈금 레이블, rotation=회전각) 위 그래프처럼 x축 눈금 레이블이나 각도를 변경해 줄 수 있다. 눈금 개수도 설정 가능하다. 내용을 상세히 보면~ plt.xticks(range(6), ['01', '02','03','04','05','06'], rotation=45) range(6) 을.. 더보기
[100일 챌린지] 파이썬 그래프 범례(legend), label 지정, 범례 위치 (feat, plt) #031 그래프 범례 지정도 어렵지 않다. 1. label 지정하고, 범례 보이게 하기 그래프를 그릴 때 label='명칭' 을 설정하고, plt.legend()를 호출한다. 2. 범례의 위치를 변경하고 싶다면? 아래처럼 위치를 지정해 주면서 legend 함수를 호출한다. plt.legend(loc=숫자) 더보기
[100일 챌린지] 파이썬 input 받기, 글자포함(contain) #030 1. input 받기 파이썬에서 제공하는 input 함수는 정말 간결하다. input('문구') 2. 글자포함 여부 확인 다른 개발언어에서는 contain이라고 많이 쓰는데, 파이썬에서는 in으로 쓴다. 글자가 포함되면 True, 아니면 False를 리턴한다. 이렇게 끝내긴 아쉬우니.... 이런 시나리오로 그래프를 그려보고 싶다. 1. 원하는 '지출목적별'을 입력한다. 2. 월별 데이터를 차트로 보여준다. input 정보를 활용해 원하는 정보의 그래프를 볼 수 있다. 그런데 전체 문구를 다 써주긴 귀찮다. 텍스트를 포함한 정보를 조회하여 보여주기! '교통'이라고 입력해도 알아서 '07 교통' 정보를 찾아 그래프를 그려준다. 굳~ 더보기
[100일 챌린지] 파이썬 pandas 자료형 DataFrame 완전 정복 3탄 (column, index 정보 가져오기) #029 위 정보에서 '0 총지수' 만 추출해 막대그래프를 그려보고 싶다. x축, y축에 원하는 값을 넣어주어야 하는데... y축 정보야 loc 함수를 이용하면 된다. 그러면 x축은?? 1. DataFrame에서 column 추출 pandas API 사이트에서 확인해보면... DataFrame 뒤에 .columns 라고 붙여주기만 하면 된다. x축 정보에 data.columns을 넣어주면?? 2. DataFrame에서 index 추출 pandas API 사이트에서 확인해보면... DataFrame 뒤에 .index 라고 붙여주기만 하면 된다. 더보기
[100일 챌린지] 파이썬 그래프 크기와 해상도 설정, 이미지 파일 저장 (feat, plt) #028 전에 rcParams을 이용해서 그래프의 설정 방법을 공부했다. [100일 챌린지] 파이썬 matplotlib의 rcParams를 default 세팅하기, style 원복하기 #016 그런데 rcParams로 그래프의 크기를 변경할 수 있다는 거?? 해보자 ㅋㅋ 우선 현재까지의 상황은~ 1. 그래프 크기 수정 & 해상도 설정 그래프의 크기도 rcParams에 포함된다. matplotlib 사이트에 가면 figure에 대한 설명이 있다. 위에 보면 rcParams 설정 방법이 그대로 나온다. 그걸 적용해 주면 된다. plt.rcParams["figure.figsize"] = [가로 인치, 세로 인치] plt.rcParams["figure.dpi"] = 도트 퍼 인치(해상도) figure 설명에 보면 def.. 더보기
[100일 챌린지] 파이썬 pandas 자료형 DataFrame 완전 정복 2탄 (loc와 iloc 차이) #027 DataFrame에서 행을 조회하는 방법은 loc이다. (#026 참고) [100일 챌린지] 파이썬 pandas 자료형 DataFrame 완전 정복 1탄 (다시 기초부터!) #026 그런데 가끔 iloc도 사용된다. loc와 iloc의 차이는 무엇일까? 다시 아래 엑셀 파일로 테스트해보자. pandas로 엑셀을 읽어와 iloc를 해보면, loc로 호출한 내용과 동일하다. (loc 내용은 #026을 참고해 주세요) 1. DataFrame에서 인덱스를 지정한다면? #024에서 인덱스 칼럼을 지정했었다. (B열 '지출목적별') [100일 챌린지] 엑셀을 읽어 간단하게 그래프 그리기 (인덱스 지정, 열 삭제) #024 그리고 나서 loc를 호출해보면... 위 내용 때문에 멘붕이 왔다. loc면 다 되는거 아니었.. 더보기
[100일 챌린지] 파이썬 pandas 자료형 DataFrame 완전 정복 1탄 (다시 기초부터!) #026 파이썬 100일 챌린지의 1쿼터를 넘기면서 헷갈리는 부분이 자료형이 DataFrame이다. 이번에 제대로 DataFrame을 공부해보고자 한다. 1. DataFrame 개념!! 인덱스(index) 와 컬럼(column) 헷갈리지 말자! 행과 열도 헷갈리지 말자! 222222 (칼럼이 표준어인데.. 왜 책에서 컬럼으로 쓰는걸까?) 2. 행과 열, 왜 헷갈리지 말아야 하는데?? 왜냐하면 검색 방법이 다르기 때문이다. #024에서 했던 작업을 다시 진행해보면.... 여기서 행과 열을 검색해본다고 가정하자. 행을 검색할 때는 번호(인덱스)를 이용하면 된다. 열을 검색할 때는 컬럼명을 이용하면 된다. 행을 검색하는 방법은 loc[인덱스] 이다. 열을 검색하는 방법은 ['칼럼명'] 이다. 대~충 공부하고 파이썬하면.. 더보기
[100일 챌린지] pandas.pydata.org 에서 pandas API 찾기 #025 0. 들어가기 전 (읽지 않아도 됩니다ㅎ) Java 강의를 들을 때, 귀에 못이 박히도록 들은 말이 있다. java.sun.com 이게 뭐냐면, java의 API를 직접 찾아서 쓰란 말이었다. (지금은 url이 오라클로 바뀌었다ㅎ) 그때는 불만이었는데, 지금도 불만이 사그라들진 않았다... ㅎㅎ 대부분은 구글로 검색하기는 하는데, 어느덧 찾아보면 정리가 안되는 느낌이다. 그래서 API를 직접 찾는 나를 발견한다. 이렇게 사족이 긴 이유는 ... 20일차가 되니까 약간 스스로의 한계가 온 거 같기 때문! 초심으로 돌아가 기초를 다지는 것이 맞는다고 느낀다. 1. pandas API reference 사이트 https://pandas.pydata.org/pandas-docs/stable/reference/ .. 더보기
[100일 챌린지] 파이썬 엑셀을 읽어 간단하게 그래프 그리기 (인덱스 지정, 열 삭제) #024 이젠 pandas를 주로 이용하려고 한다. [100일 챌린지] 파이썬 csv 모듈과 pandas 차이점, 비교 정리 #014 pandas가 간단하게 코딩되니...ㅎㅎ 오랜만에 엑셀 데이터를 읽고 그래프를 그려보고자 한다. 아래 정보는 통계청에서 다운로드한 데이터이다. (이름은 sample2로 변경함) 1. 엑셀 정보를 읽어오기 (feat. pandas) pandas 라이브러리의 read_excel을 이용하면, 엑셀 데이터를 DataFrame으로 읽어온다. DataFrame은 그대로 출력이 가능하다. 하지만 엑셀에서 A열은 필요 없다. 그리고 데이터를 조회할 때, 어차피 '지출목적별'로 불러오기를 할 것 같다. 2. 인덱스 지정하기 (feat. pandas) DataFrame에서 인덱스를 지정해 주면, 검.. 더보기
[100일 챌린지] 파이썬 numpy array (ndarray) 생성과 함수 모음 #023 #22에서는 numpy 설치와 numpy 함수에 대해 정리했었다. [100일 챌린지] 파이썬 numpy 설치와 numpy 함수 모음 #022 공부한 김에 numpy 나머지도 정리해본다. numpy를 사용하는 이유는 숫자 데이터를 쉽게 다룰 수 있기 때문이다. numpy 라이브러리는 ndarray라는 N차열 배열 데이터 타입을 사용한다. #12 에서 파이썬의 데이터 타입을 정리한 적이 있다. ndarray는 파이썬 리스트 형식과 비슷한 점이 많다. (인덱싱, 슬라이싱 지원) [100일 챌린지] 파이썬 배열, 리스트, 튜플, 딕셔너리 (array, list, tuple, dictionary) 괄호 차이 #012 1. ndarray 생성 생성하는 방법은 간단하다. ㅎ np.array([데이터]) 2. ndar.. 더보기
[100일 챌린지] 파이썬 numpy 설치와 numpy 함수 모음 #022 파이썬 책에 numpy~ numpy~ 안 나오는 데가 없다. 언제 사용하는 라이브러리인가? 먼저 설치부터 시작한다!! 1. numpy 설치 이전에 내가 설치해 둔 적이 있는 건가?? cmd 창에서 pip install numpy 명령어를 입력하면 된다. 2. numpy 간단 함수 모음 책이나 강의를 들으면 numpy 관련 함수들이 계속 나온다. 자주 사용되는 것만 추렸다. 그래도 간략한 설명을 하자면~ import numpy as np → numpy를 import 한다. np라 부른다. np.sqrt(숫자) 제곱근을 구한다. 루트! np.pi 원주율. 3.14XXX np.sin(각 in radians) np.cos(각 in radians) 삼각함수 예시다. 그런데 도를 넣으면 안 된다. 라디안 기준으로 .. 더보기
[100일 챌린지] 파이썬 pandas 엑셀 import (xlrd 설치, openpyxl 설치, read_excel 에러) #021 난 csv 파일보다는 xls나 xlsx을 주로 사용한다. 그래서 순수하게 xlsx 파일을 읽어오려던 것뿐인데... 에러 문구를 보니.... ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd. xlrd를 설치해야 해? 1. xlrd 설치 외부 라이브러리 설치는 모다??? pip install 이다 ㅎㅎ cmd창에서 pip install xlrd 명령어를 입력한다. 이제 되는 건가?? ValueError: Your version of xlrd is 2.0.1. In xlrd >= 2.0, only the xls format is support.. 더보기
[100일 챌린지] 파이썬 리스트 함수 정리 (슬라이싱,역순슬라이싱,값추가,길이,역순재배열) #020 리스트를 사용하면 당연히 알아야 할 것. 슬라이스!!! 이걸 모르면 for문 돌리며 고생한다. 슬라이싱은 원하는 구간의 데이터에 접근할 수 있다. 1. 리스트 슬라이싱 리스트명 [ 시작점(이상) : 종료점(미만) ] 이렇게 텍스트로 써놓으면 이해가 안 될 거 같은데 예시를 보면 이해가 팍! 리스트의 시작은 0이다. 그래서 a=0, b=1, c=2, d=3, e=4, g=5 으로 위치가 된다. (쓰다보니 f가 빠져있었네..ㅎㅎㅎ 그냥 쓴다...ㅎㅎ) 시작점은 포함해서 접근한다. 다만 종료점은 포함하지 않는다. 그런데 마이너스로도 된다...???? 마이너스는 역순이다. 숫자는 항상 앞이 작아야 한다. 역순 위치는 a=-6, b=-5, c=-4, d=-3, e=-2, g=-1 이다. 마이너스도 위 규칙이랑 똑.. 더보기
[100일 챌린지] 파이썬 matplotlib 한글 폰트, 마이너스 기호 깨짐 방지 #019 지금까지 내가 그래프에 이름을 영어로 작성한 이유는... 한글이 깨져서다. 알고 보면 간단한데 말이지... 1. 한글깨짐 방지 plt.rc('font', family='Malgun Gothic') #16에서 rcParams을 잠깐 언급한 적이 있었다. rc 함수는 현재 rcParams를 설정하는 함수이다. 'Malgun Gothic' 은 기본 한글 폰트이길래 그대로 사용했다. (영문을 그대로 읽으면?? 말군고딕..? 맑은고딕이여..ㅎㅎ) 그런데... y축 하나의 값을 '-1'로 했더니 마이너스 기호가 깨진다. 2. 마이너스 기호 깨짐 방지 plt.rcParams['axes.unicode_minus'] = False 아래 적용한 예제는~ 아니 근데.. 어떻게 plt.rcParams['axes.unicode.. 더보기
[100일 챌린지] 파이썬 matplotlib 모든 그래프 유형 (막대, 수평막대, 원, 히스토그램, 산점도) #018 모든 그래프는 아니겠지만 matplotlib을 공부하다 보면 계~속 알려주는 그래프 유형이 있다. 간단한 예제를 만들어 필요할 때 써먹을 예정이다. 자세한 로직은 나중에 더 파고파고!!! 1. 막대그래프 Bar 막대그래프는 영어 그대로 함수를 호출하면 끝. bar(x축 위치, y축 위치) 2. 수평 막대그래프 막대그래프를 눕혀 수평으로 그리고 싶다면 아래처럼 호출한다. barh(y축 위치, x축 위치) barh는 bar+horizontality을 합친 말인 듯~ 1번 막대그래프와 다른 점이 있다면 x축과 y축이 반대로 표시해야 한다는 점이다. 주로 사용되는 예시로 항아리 모양의 인구 분포가 있다. 3. 원그래프 Pie chart 원그래프를 파이 차트라고도 불린다. pie([ a, b, c, ...]) 대.. 더보기