python - pandas 필드명 바꾸기(이름 바꾸기)


rename 명령어


1
2
3
4
5
6
7
8
## 컬럼명 변경하기 
oil2.rename(columns= {"차량번호_x" : "차량번호"
                       "본부_x" : "본부"
                       "팀_x" : "팀",
                       "날짜_x""날짜",
                       "최종 종료 주행거리(km)":"주행거리”,
                       }, inplace=True )
cs

 

'python' 카테고리의 다른 글

python - pandas 중복제거  (0) 2019.03.01
python타입 바꾸기  (0) 2019.03.01
python pandas의 pivot 해보자  (0) 2018.03.07
python 위경도 거리 구하기  (0) 2018.03.03
python encoding 종류  (0) 2018.03.03

python - pandas 중복제거 



1
2
3
4
5
6
7
8
9
10
11
12
13
## 중복제거 내용 
 
 
raw_data = {
            'first_name': ['Jason''Jason''Tina''Jake''Amy'],
            'last_name': ['Miller''Miller''Ali''Milner''Cooze'],
            'age': [4242362473],
            'preTestScore': [424231242],
            'postTestScore': [2525576270]
}
df = pd.DataFrame(raw_data)
df.drop_duplicates(['preTestScore'], keep='last')
 
cs



keep 옵션값으로 last 마지막 값을 기준으로 하고, first는 첫번째값을 기준으로 삼아 중복제거 한다. 

'python' 카테고리의 다른 글

python - pandas 필드명 바꾸기(이름 바꾸기)  (0) 2019.03.01
python타입 바꾸기  (0) 2019.03.01
python pandas의 pivot 해보자  (0) 2018.03.07
python 위경도 거리 구하기  (0) 2018.03.03
python encoding 종류  (0) 2018.03.03

python - pandas 타입 보기 


1
df.dtypes
cs




python - pandas 타입 바꾸기

예) string 타입을 다른 타입으로 바꿀때


1
df['필드명'].astype('float64')
cs




'python' 카테고리의 다른 글

python - pandas 필드명 바꾸기(이름 바꾸기)  (0) 2019.03.01
python - pandas 중복제거  (0) 2019.03.01
python pandas의 pivot 해보자  (0) 2018.03.07
python 위경도 거리 구하기  (0) 2018.03.03
python encoding 종류  (0) 2018.03.03

오늘은 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

내가 아는 pandas encoding 종류는 2가지다.


utf-8, cp949


현재 python은 utf-8 표준화 되어있다.

cp949는 windows 생성된 파일이다. 



import pandas as pd


df = pd.read_csv('../data/data.csv ', encoding = 'utf-8')  

df = pd.read_csv('../data/data.csv ', encoding = 'cp949')  #windows용 encoding




'python' 카테고리의 다른 글

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

요즘 핫하고, 쉽다고 말하는 python를 2년전쯤(16년?) 시작해보았다. 

대학교 때, 전공수업으로 C언어 한 학기 들어봤고, 15년 넘게 코딩에 대해서 생각도 안해보다가 호기심에 접해보았다. 


2년전은 무슨 오기와 오만이 나에게 생겼을까? 금방 될줄 알았다. 

하지만 막상 시작해보니 기초 문법책을 보고 실습해봐도 무슨말을 하는지 정말 몰랐고, 

조금씩 따라 해보다가 다시 포기하고 접었다.


1년후, 회사에서 빅데이터 분석 기초 강의를 듣다가 다시 python을 다시 시작중이다.

jupyter notebook 설치도 못하고 전전긍긍하다가, 

지금은 천천히 따라하는데, 아무래도 내가 아는 지식을 최대한 정리 해보고 싶다. 


python 공부해서

빅데이터 분석 전문가가 되고 싶기도 하고,

웹사이트나 블로그 정도는 내 손으로 만들고 싶기도 하고, 

간단한 App 개발도 해보고 싶다. 


하지만, 갈길이 멀다. 유튜브 보면서 따라해도 잘 안된다. 

아마 나는 코딩 센스가 정말 없는것 같기도 하다. 


그래도 한번 해보자. 하다보면 뭐라도 할수 있겠지? 




기초 문법은 나에게 너무 지루하고 하기 싫고 이해도 안갔다. 이해 할 생각 조차도 않하는것인지도 모른다. 

python 자료형

처음 공부할때 헷갈리고 왜 그런지 이해가 안갔다. 

지금은 계속 코딩 따라하다보니 조금 익숙해져서, 알것 같기도 하다.  


[ ] ?

{ } ?

( ) ?

이런 괄호 종류는 언제 쓰는것일까. 

list, dictionary, set, tuple  이런 자료형은 어떤 괄호를 쓰는 것일까? 



일단 정리해보자!! 계속 정리하다 보면 뭐라도 남겠지




-블로그 시작하는 이유-

'python' 카테고리의 다른 글

python타입 바꾸기  (0) 2019.03.01
python pandas의 pivot 해보자  (0) 2018.03.07
python 위경도 거리 구하기  (0) 2018.03.03
python encoding 종류  (0) 2018.03.03
Mac기준, jupyter notebook - python 한글폰트 설정하기  (0) 2018.03.02


jupyter notebook 코딩할때, matplotlib 라이브러리에서 한글이 깨지는 경우가 발생하는데, 
아래와 같이 미리 설정하면 한글 폰트가 깨지지 않습니다. 


python code


from matplotlib import font_manager, rc


path = '/Library/Fonts/NanumBarunGothic.otf'
font_name = font_manager.FontProperties(fname=path).get_name()

rc('font', family = font_name)




path는 내 맥북기준으로 작성하였으며, 폰트도 제가 원하는대로 지정하였습니다. 

'python' 카테고리의 다른 글

python타입 바꾸기  (0) 2019.03.01
python pandas의 pivot 해보자  (0) 2018.03.07
python 위경도 거리 구하기  (0) 2018.03.03
python encoding 종류  (0) 2018.03.03
python 공부해볼까?  (0) 2018.03.02

+ Recent posts