2021년 33주차 기록
2021.08.16
pandas sudoku plugin-vim-surround
08/16 (월) ~ 08/22 (일)
이번주 관심가는 포스팅 아이템
pandas 기본 사용법에 접근성을 높이는 포스팅
- #pandas
- pandas의 기본 기능이 궁금할 때 stackoverflow도 좋지만..
- 공식 Documents 에 링크를 걸어 설명을 찾을수 있도록 하는 포스팅이 좋을것 같음
예제
-
selection by label : 인덱스및 컬럼 레이블 기준으로 Series나 DataFrame 선택하는 방법.
- Dictionary 구조에서 key로 선택하는 방법을 연상하면 됨
- 이 방식에서 가장 기본이 되는 attribute은
.loc
임 - slicing with labels : 인덱스및 컬럼 레이블 기준으로 슬라이싱하기
-
selection by position : 위치 기준으로 Series나 DataFrame 선택하는 방법.
- 리스트 구조에서 인덱스로 선택하는 방법을 연상하면 됨
vim-surround
- #plugin-vim-surround ( Vi and Vim Beta 태그)
- surround.txt, github.com/tpope/vim-surround
- Vim surround plugin tutorial
- VIM Surround.vim 사용하기
몇가지 pandas 팁
- Check if single cell value is NaN in Pandas : Cell 하나만 NaN인지 체크하기
Pandas 에서 Period 다루기
- 기간을 넘겨주어 기간에 포함되면 처리하는 동작을 구현하고 싶다
- Pandas에 Time series / date functionality 가 이미 있으므로 이것을 이용해보자
- Pandas에는 기간을 의미하는 pandas.Period 라는 객체가 있다
- 설정하는 방법은 Period 정의하기를 참조한다.
- period 객체에서 가장 핵심적인 부분은
freq=
attribute을 어떻게 설정하느냐는 것이다.- 아래 예에서 같은 날짜를 설정했지만
freq=
의 설정에 따라 시작시간과 끝시간이 달라진다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
>>> period = pd.Period('2021-08-21', freq='Y') >>> period.start_time Timestamp('2021-01-01 00:00:00') >>> period.end_time Timestamp('2021-12-31 23:59:59.999999999') >>> period = pd.Period('2021-08-21', freq='M') >>> period.start_time Timestamp('2021-08-01 00:00:00') >>> period.end_time Timestamp('2021-08-31 23:59:59.999999999') >>> period = pd.Period('2021-08-21', freq='W') >>> period.start_time Timestamp('2021-08-16 00:00:00') >>> period.end_time Timestamp('2021-08-22 23:59:59.999999999') >>> period = pd.Period('2021-08-21', freq='3D') >>> period.start_time Timestamp('2021-08-21 00:00:00') >>> period.end_time Timestamp('2021-08-23 23:59:59.999999999')
- 아래 예에서 같은 날짜를 설정했지만
- freq는
기간-object
를 결정한다.- 어찌보면 vim에서
text-object
개념과 통하는 측면이 있다고 해야하나?- 여러가지 사전 정의된 단위로 범위를 설정한다는 개념이 비슷해 보인다
- 설정하는 방법은 아래 링크를 참고한다
-
DateOffeset objects : 조금 아래 표에서
Frequency String
을 참조한다 - Offset aliases : 표를 참조한다
-
DateOffeset objects : 조금 아래 표에서
- 어찌보면 vim에서
- pandas.Period의
start_time
,end_time
attribute과pandas.Series.between
method를 같이 쓰면 특정기간에 해당하는 행만 처리하는 코드를 간단히 구현할 수 있다.
관련된 참조 할만한 링크
- Python pandas, 시계열 데이터 빈도/주기와 날짜 Offsets
- Python datetime, pandas Timestamp를 문자열로 변환 등등
- How to Convert Strings to Datetime in Pandas DataFrame
- Check if a pandas.Timestamp is in a pandas.Period
- What values are valid in Pandas ‘Freq’ tags?
기타
-
Python Quickstart, Google Sheets for Developers > Sheets API : Python으로 구글 시트 다루기
- BillMaker 스크레이핑 데이터를 구글시트로 바로 넣기로 응용할수 있다.
- Slicing a dictionary
- Check if a value exists in pandas dataframe index
번역 : Object-Oriented Programming – The Trillion Dollar Disaster
- 원문 : Object-Oriented Programming – The Trillion Dollar Disaster, BetterProgramming / Medium
- Reacting to Controversial Opinions of Software Engineers 에 링크되어 있던 글
- My controversial opinion: Object Oriented Programming is the worst thing, stackoverflow : 링크된 스텍오버플로우 답변
Water Sort Puzzle Solver
- water sort puzzle 이란 모바일 게임이 있는데 해결하는 코드를 작성하고 싶다
- Water Sort Puzzle
- Water sort puzzel level 50 solution, Levelsolved : 해답나와 있는 사이트
- WaterSortPuzzleSover : github 코드 , Go 언어
- Water Sort Puzzle, codechef : 워터 소트 퍼즐을 이론적으로 분석
Sudoku Solver
- #sudoku
- 몇 년전에 피터 노빅 이 모든 스도쿠 문제를 푸는 방법, Solving Every Sudoku Puzzle 에 대해 올린 적이 있다.
- 유사한 해결책들이 Sudoku solving algorithms, 영문 위키 에 올라와 있는데 포스팅하면 좋을것 같다
Peter Novig
- 구글의 연구이사 ( a director of research at Google), 검색 품질 이사 역임
- 유명한 Text Book인 Artifical Intellignece: A Moden Approach, 1995년 초판, 2020년 4판 발간 의 공동 저자
- 홈페이지 : Peter@Norvig.com
- 유명한 글
John M. Zelle
- 피터 노빅이 추천한 Python 책 저자
- 해당 책에 대한 설명이 자세히 나온 링크 : Python Programming: An Introduction to Computer Science
Creative Commons license
- Abstruse Goose 중에서 번역해보고 싶은 에피소드가 있는데 license가 궁금했다
- CCL 한국어 설명
Abstruse Goose
- Trash talk : 스타크래프트, 한글이 나옴
기타
-
import antigravity, 귀도의 블로그 : 파이썬 창시자인 귀도 반 로썸의 블로그중 이스터 에그 인
imprt antigravity
소개.