pandas 12

[ Python ] csv 파일 읽고, 쓰기 ( pandas / csv 모듈 )

데이터를 처리하다 보면 csv 파일 자주 만나게 되는데, Python pandas와 csv 모듈로 처리할 수 있다. 파이썬 pandas csv 파일 읽고, 쓰기 샘플데이터 : example.csv (UTF-8) ============================= "Student","Math","Computer","English" "인호",90,85,100 "철수",85,100,95 "영희",75,70,85 "민수",95,85,90 "지훈",100,85,95 "지영",90,85,90 "정희",95,85,95 ============================= pandas의 read_csv 메소드로 csv 파일 읽기 import pandas as pd df = pd.read_csv(r'C:\Python\..

[Python] Pandas iis-log DataFrame 접속자IP 국가식별 컬럼 추가

import geoip2.database import pandas as pd reader = geoip2.database.Reader('GeoLite2-City.mmdb') log_field = ['date', 'time', 's-sitename', 's-computername' , 's-ip' , 'cs-method' , 'cs-uri-stem', 'cs-uri-query', 's-port' ,'cs-username', 'c-ip', 'cs-version', 'cs-User-Agent', 'cs-Cookie', 'cs-Referer', 'cs-host', 'sc-status', 'sc-substatus', 'sc-win32-status', 'sc-bytes', 'cs-bytes', 'time-taken..

[Python] pandas rank를 이용한 순위 표시

rank : Series나 DataFrame의 값의 순위를 표시 Sample Dataframe 만들기 import pandas as pd lst_names = ['철수','영희','민수', '민아', '영석', '석희', '희순', '영철'] lst_lang = [80,90,95,100,100,95,75,80] lst_math = [70,85,90,95,75,80,90,85] lst_eng = [80,85,80,100,95,90,85,90] df = pd.DataFrame([ x for x in zip(lst_names,lst_lang,lst_math,lst_eng)], columns=['이름','국어','수학','영어']) df 국어, 수학, 영어의 총점을 구하기 df['총점'] = df['국어'] +..

[Python] pandas groupby - count, max, min, mean, sum, agg

2X8 Sample DataSet import pandas as pd lst_A = ['a','b','c', 'a', 'a', 'b', 'c', 'c'] lst_B = [10,15,20,15,30,40,35,5] df = pd.DataFrame([ x for x in zip(lst_A,lst_B)], columns=['Data','Score']) df count : 그룹화 되는 데이터의 갯수 df.groupby('Data').count() max : 그룹화 되는 데이터의 최대값 df.groupby('Data').max() min : 그룹화 되는 데이터의 최소값 df.groupby('Data').min() sum : 그룹화 되는 데이터의 합 df.groupby('Data').sum() mean : 그룹화 ..

[Python] pandas의 sort_values를 이용한 dataframe 정렬

sort_values : 값을 기준으로 정렬하는 메소드 학생의 영어점수와 수학점수 dataframe 샘플 만들기 import pandas as pd names = ['철수','영희','민수','영자'] eng_point = [90,85,70,75] math_point = [100,90,90,85] df = pd.DataFrame([ x for x in zip(names,eng_point,math_point)], columns = ['학생', '영어', '수학']) print(df) ----------------------------------------------------------------------------- 학생 영어 수학 0 철수 90 100 1 영희 85 90 2 민수 70 90 3 영자 ..

[Python] Pandas DataFrame 컬럼명 특정 문자로 변경

import pandas as pd df = pd.DataFrame({'A-1':[1,2,3,4,5],'A-2':[1,2,3,4,5]}) print(df.columns) --------------------------------------------------------- Index(['A-1', 'A-2'], dtype='object') # columns.str.replace(변경전 문자,변경할 문자) df.columns = df.columns.str.replace('-','_') print(df.columns) --------------------------------------------------------- Index(['A_1', 'A_2'], dtype='object') # - A-1이 A_..

[Python] pandas datetime 타입 시간/주/일 더하기

시스템 로그를 분석할 때, 로그시간에 UTC시간을 더해줘야 할 때가 있는데, datetime의 timedelta의 메소드를 이용하여 변환할 수 있겠다. 기준일 from datetime import datetime, timedelta ....... print(data['time']) 0 2019-08-27 00:00:00 1 2019-08-27 00:00:00 2 2019-08-27 00:00:00 3 2019-08-27 00:00:00 4 2019-08-27 00:00:00 ... 373064 2019-08-27 23:59:58 373065 2019-08-27 23:59:59 373066 2019-08-27 23:59:59 373067 2019-08-27 23:59:59 373068 2019-08-27 ..

[Python] pandas를 이용한 tomcat accesslog 분석 및 활용

톰캣 웹 로그도 pandas를 이용하면 빠른 속도로 처리할 수 있다. ​ 로그가 100만 ~ 1000만 이상 넘어가면 pandas를 이용하는 게 상당히 빠르며, DataFrame으로 저장하고, ​ CSV로 파일로 만들거나 다른 DB에 import 가 가능하기 때문에 활용도도 좋다고 볼 수 있다. ​ 엘라스틱서치, 몽고DB도 python API가 있기 때문에 역시 가능하다. 톰캣을 기본설치하게 되면, 아래와 같이 기본 로깅세팅이 되어 있다. ​ pattern="%h %l %u %t "%r" %s %b" ​ ​ tomcat logging에 관한 정보는 아래 링크를 참조 https://pydole.tistory.com/entry/Apache-Tomcat-Logging-%EA%B2%BD%EB%A1%9C%EC%9..

[Python] list data type pandas의 DataFrame 만들기

1개 의 리스트 데이터를 DataFrame만들기 import pandas as pd lst_A = ['a','b','c','d'] df = pd.DataFrame(lst_A) print(df) ------------------------------- 0 0 a 1 b 2 c 3 d 2개이상의 동일한 길이의 리스트 데이터를 DataFrame만들기 ( zip 활용) import pandas as pd lst_A = ['a','b','c','d'] lst_B = [1,2,3,4] df = pd.DataFrame([ x for x in zip(lst_A,lst_B)]) print(df) ------------------------------------------------- 0 1 0 a 1 1 b 2 2 c ..

[Python] pandas를 이용한 mariadb 결과값 다른 mariadb 테이블로 저장

python pandas를 이용해서 mariadb의 쿼리 결과값을 다른 table로 저장이 가능하다. 샘플로 perfomance_log 테이블의 4개 컬럼 1,000,000를 불러와서 새로운 테이블로 저장해보겠다. sys_processortime sys_mem_availablembytes sys_net_revbytes_sec sys_net_sendbytes import pandas as pd import pymysql from sqlalchemy import create_engine conn = pymysql.connect(host='host', user='user', password='password' ,db='db', charset='utf8') query = 'select sys_processort..