패러렐즈(Parallels);;  맥북 한영전환키 ;; 설정하기



내 맥북에서는 패러렐즈로 Windows를 쓰고 있다.

그래서 맥북의 기본제공하는 맥북키는 굉장히 불편하게 느껴진다. 



불친절하게 정리한 패러렐즈 한영키 설정방법



  • Karabiner-Elements 설치  
  • Karabiner : right_option → f16 추가
  • Parallels 설정 
    • Parallels 제어센터 -> Parallels 설정 command , → 단축키
    • windows10 → " + " 으로 단축키 추가 
    • F16 → Altgr (오른쪽 Alt키)
  • Windows 장치관리자 → 키보드에서 설정변경
    • 키보드 → 드라이버 소프트웨어 업데이트 클릭 → 소프트웨어 찾아보기 → 드라이버 목록 직접선택
    • 호환가능한 하드웨어표시 선택해제 → 왼쪽(표준 키보드)선택 → 우측 표준 PS/2 101/102 키보드 선택
    • 예(Y) 클릭 하고 재부팅

  • 텍스트 서비스 및 입력언어 변경

  • 한국어(대한민국) - Microsoft IME 2010으로 변경


오늘은 Python pandas의 기능중 pivot를 올려보겠다. 

엑셀에서 데이터 분석을 하면 가장 많이 쓰는 기능이 pivot(피벗)이다. 

그런데, pandas에서 피벗을 이쁘게(?) 지원해주고 있어서 정리해보고자 한다. 


문제점은 엑셀은 마우스로 필드 드래그만 하면 알아서 계산도 해주고 표도 만들어지는데, 

역시 python 친철하지 않지요.. 간단한 몇줄의 코딩이 필요하다. 


익숙해지면, 엑셀처럼 편하게 쓸수 있겠지..일단 정리 GoGo!




## pandas와 파일 불러오기

import pandas as pd

import numpy as np


sale = pd.read_excel('../xls_data/판매현황.xlsx',parse_cols='A,B,C,D,E,F,G' ,encoding='cp949')


sale.head() 




## pivot_table은 옵션이 없을 경우 평균값이 디폴트다. 


 

pd.pivot_table(sale, index = '분류')




## pivot_table은 옵션으로 np.sum(합계) 추가하였다.


 

pd.pivot_table(sale, index = '분류', aggfunc=np.sum)





## pivot_table은 옵션으로 np.sum(합계) 추가하였다.


 

pd.pivot_table(sale, index = '분류', aggfunc=np.sum)




## pivot에서 index 여러가지를 넣어보았다. head는 줄이 길어서 20줄로 제한했다.


 

pd.pivot_table(sale, index = ['분류','상품코드','상품명'],aggfunc=np.sum).head(20)



## pivot에서  여러 index + 계산함수 2가지(sum, mean) 하였다.


 

pd.pivot_table(sale, index=['분류','상품명'],values='소비자가', aggfunc=[np.sum,np.mean]).head(20)




'python' 카테고리의 다른 글

python - pandas 중복제거  (0) 2019.03.01
python타입 바꾸기  (0) 2019.03.01
python 위경도 거리 구하기  (0) 2018.03.03
python encoding 종류  (0) 2018.03.03
python 공부해볼까?  (0) 2018.03.02

두서 없이 블로그 하는것 같군...



python - pandas를 통해 두 지점의 위경도 리스트를 불러온 후, 두 지점의 위경도 구하는 코딩을 구현해봤다. 

그냥 두 지점을 거리를 구하는 것은 구글 검색하면 쉽게 나와서 공식은 어렵지 않게 만들었는데, (복붙했다)

pandas에서 구할려다 보니 잘 안되서, 고민을 너무 많이 했다.. (역시 나는 코딩 센스가 없다.)



import pandas as pd

import numpy as np
from math import sin, cos, sqrt, atan2, radians

#엑셀 csv파일에서 두지점의 위경도 지점 불러옴

df = pd.read_csv('../csv_data/apt_result.csv', encoding='cp949')




#대략 이런 포맷이다.


df1 = df[['xpos','ypos','long','lat']]
df1.head()





# 두 지점의 위경도 거리를 구하는 함수를 만들었다.

R = 6373.0

def mydistance(a1,b1,a2,b2):
    x1 = radians(a1)
    y1 = radians(b1)
    x2 = radians(a2)
    y2 = radians(b2)
    dlon = x2 - x1
    dlat = y2 - y1
    a = sin(dlat / 2)**2 + cos(y1) * cos(y2) * sin(dlon / 2)**2 
    c = 2 * atan2(sqrt(a), sqrt(1 - a))    
    return R * c

mydistance(127.001502,37.288405,127.002441,37.290188)
Out[5]:
0.21502719071344528



## 이 부분이 나에게 가장 고민을 많이 하게 만든 부분이다. 

pandas에서 바로 커스텀 함수(mydistance)로 위경도 거리 구하면 될줄 알았다. 

그런데 안됐다. 

아래 처럼, 전부 리스트로 추출한후, 계산 한 함수를 돌려보니 계산이 됐다. 

pandas에서는 바로 안되고, 리스트로 추출하니까 되는지 아직도 모르겠다.  일단 됐으니까,, 

그런데, 이 파일은 그나마 몇 백개 안되니까 몇 초안에 계산이 되었는데, 


아래처럼 리스트 추출해서 계산한다면,  몇천만줄, 몇억줄은 내 맥북 멈출것 같은 느낌이 들어서 쎄하다. 

아래처럼 위경도 거리구하면 계산 속도가 느리다. 

좀 더 빨리 할수 있는 방법이 있을것 같지만, 내 능력 밖이다. 



df1_xpos = []

df1_ypos = []
df1_long = []
df1_lat = []
for i in range(len(df1)):
    df1_xpos.append(df1['xpos'][i])
    df1_ypos.append(df1['ypos'][i])
    df1_long.append(df1['long'][i])
    df1_lat.append(df1['lat'][I])


 df1_distance = []

for i,j,k,l in zip(df1_xpos,df1_ypos,df1_long,df1_lat):
    df1_distance.append(mydistance(i,j,k,l))


df1_distance



[0.21501830417233017,

0.21501830417233017, 0.21501830417233017, 0.21731888422264176, 0.21731888422264176, 0.21731888422264176, 0.21731888422264176, 0.0491964065334208, 0.0491964065334208,

....

]



### Jupiter notebook에 작성한것을 블로그에 이쁘게 올리는 방법을 알고 싶다. 


### 위경도 거리구한 df1_dis1와 기존 df1와 concat하여, 내가 원하는 데이터프레임(df2)을 구하였다.



df1_dis1 = pd.DataFrame(data = df1_distance

df1_dis1.head() 



df2 = pd.concat([df1, df1_dis1], axis=1)

df2.head()



df2.rename(columns = {0 : 'distance'}, inplace = True)

df2.head()




'python' 카테고리의 다른 글

python타입 바꾸기  (0) 2019.03.01
python pandas의 pivot 해보자  (0) 2018.03.07
python encoding 종류  (0) 2018.03.03
python 공부해볼까?  (0) 2018.03.02
Mac기준, jupyter notebook - python 한글폰트 설정하기  (0) 2018.03.02

+ Recent posts