티스토리

DevOps Engineer
검색하기

블로그 홈

DevOps Engineer

pydole.tistory.com/m

Pydole 님의 블로그입니다.

구독자
12
방명록 방문하기

주요 글 목록

  • [ Python ] pandas plot 을 이용한 다양한 graph 그리기 Pandas의 plot 을 이용하여 그래프 그리기 import numpy as np import pandas as pd df = pd.DataFrame(np.random.rand(20,6), columns=['a','b','c','d','e','f']) line graph df.plot.line(figsize = (15,5)) bar graph df.plot.bar(figsize = (15,5), grid=True) area graph df.plot.area(figsize = (15,5), xticks = (1,5,10,15,20), yticks = (1,2,3,4,5)) area graph ( Time index ) import numpy as np import pandas as pd from date.. 공감수 5 댓글수 0 2023. 5. 24.
  • [ 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\.. 공감수 2 댓글수 0 2023. 5. 16.
  • [ Python ] matplotlib plot Shading Area (특정구간 강조) 그래프를 추출할 때, 쉐딩(강조)을 적용하기. 엔지니어의 보고서에 그래프 넣기 기본 x, y 막대 그래프 x = [ x + 1 for x in range(30) ] y = [ randint(1,5) for x in range(30) ] 단일 구간 강조 import matplotlib.pyplot as plt from random import randint a = 3 b = 8 plt.axvspan(a, b, color='blue', alpha=0.1) plt.plot(x, y) plt.show() 여러구간 강조 하기 (구간 지정) import matplotlib.pyplot as plt from random import randint z = {3:4,15:20,25:29} # 구간 Dictionary f.. 공감수 4 댓글수 0 2023. 2. 3.
  • [ Python ] pandas를 이용한 bar graph (stacked) 1. 기본 bar 그래프 그리기 import pandas as pd month = [ 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' ] data = { "Banana":[52, 83, 82, 53, 99, 94, 83, 74, 87, 70, 63, 74], "Orange":[99, 71, 77, 57, 87, 50, 59, 58, 63, 76, 51, 88], "mango":[50, 71, 93, 82, 70, 58, 55, 97, 76, 52, 97, 83], } df = pd.DataFrame(data,index=month) df.plot(kind="bar",figsize=(15,10)) 2. 스택그래프를 그리려면, s.. 공감수 3 댓글수 0 2022. 3. 1.
  • [Python] wordcloud 만들기 라이브러리 설치 pip install wordcloud pip install matplotlib 텍스트의 빈도를 계산하여 클라우드 그리기 text = ''' 파이썬 파이썬 자바 파이썬 C언어 GOLANG 파이썬 ASP 자바스크립트 파이썬 C++ C언어 델파이 파이썬 ''' from wordcloud import WordCloud import matplotlib.pyplot as plt wordcloud = WordCloud(font_path='NanumBarunGothic.ttf', background_color='black').generate_from_text(text) plt.figure(figsize=(5,5)) plt.imshow(wordcloud, interpolation='bilinear') .. 공감수 2 댓글수 0 2021. 1. 28.
  • [Python] seaborn을 이용한 간단한 heatmap 그리기 import seaborn as sns import pandas as pd import matplotlib.pyplot as plt # 7 X 7 2차원 배열과 X축 , y축 value = [[10,20,30,30,40], [10,20,30,30,40], [10,20,30,30,40], [10,20,30,30,40], [10,20,30,30,40]] x = ['X1', 'X2', 'X3', 'X4', 'X5'] y = ['Y1', 'Y2', 'Y3', 'Y4', 'Y5'] # create Dataframe df = pd.DataFrame(value,columns=x, index=y) # heatmap fig, ax = plt.subplots(figsize=(15,10)) # figsize ax = sns.. 공감수 5 댓글수 0 2020. 11. 28.
  • [Python] pandas와 pymssql을 이용하여 MSSQL 연동 데이터 분석을 위해 CentOS 7(Linux)에서 MSSQL DB로 데이터를 gathering 1. pymssql은 pip install pymssql로 설치 2. pymssql로 DB에 접근하여, 쿼리 결과의 ROW를 Pandas의 DataFrame로 읽는다. import pymssql import pandas as pd conn = pymssql.connect(host=' ', user=' ', password=' ', database=' ') querys= ''' SELECT 'PANDAS PYMSSQL TEST' ''' data = pd.read_sql(sql=querys, con=conn) conn.close() print(data) =================================.. 공감수 3 댓글수 0 2020. 10. 5.
  • [Python] padnas Dataframe 에서 astype을 이용하여 숫자형으로 변환할 수 없을 때 to_numeric을 이용 astype을 이용하여 문자열을 숫자형으로 형 변환할 때, 사용하지만 일부 변환할 수 없는 데이터가 있을 때는, ValueError 에러를 발생시킨다. 이럴경우, to_numeric을 이용하여, 변환할 수 없는 데이터를 NaN 처리하고, 변환 시킬 수 있다. 아래와 같이 price에 1500a라는 값이 있다. Dataframe을 만들 때, object 타입으로 만들어 지며, 이 데이터 때문에 astype을 이용하여 숫자형을 변경할 수 없다. import pandas as pd df = pd.DataFrame([['milk',1000],['icecream',500],['bread','1500a']], columns=['food','price']) df df.dtypes df['price'] = df['pr.. 공감수 3 댓글수 0 2020. 8. 2.
  • [Python] matplotlib - 그래프에 값 표시 하기 그래프에 값을 표시 하기 위해서는 matplotlib.pyplot.text 를 사용하면 되며, x축과 y축의 좌표에 값을 텍스트로 표시하는 것이다. x = [1,2,3,4,5] y = [100,200,300,400,500] import matplotlib.pyplot as plt plt.bar(x,y) for i, v in enumerate(x): plt.text(v, y[i], y[i], # 좌표 (x축 = v, y축 = y[0]..y[1], 표시 = y[0]..y[1]) fontsize = 9, color='blue', horizontalalignment='center', # horizontalalignment (left, center, right) verticalalignment='bottom') .. 공감수 6 댓글수 1 2020. 8. 2.
  • [Python] matplotlib - lollipop graph import matplotlib.pyplot as plt from random import randint data = [] for _ in range(1,41): data.append(randint(1,100)) plt.stem(range(1,41), data) plt.show() 공감수 1 댓글수 0 2020. 7. 15.
  • [Python] matplotlib - pie graph 1. 기본 파이 그래프 그리기 import matplotlib.pyplot as plt plt.pie([10,20,30,40,50]) # 리스트의 값을 더한 후 값의 크기에 자동으로 비율조정 plt.show() 2. 라벨넣기 plt.axis('equal') label = ['A','B','C','D','E'] plt.pie([10,20,30,40,50], labels=label) # labels명 지정, 값과 라벨의 길이가 같아야 한다 plt.legend() plt.show() 3. 비율 표시 넣기 plt.axis('equal') # 크기를 일정하게 조정 label = ['A','B','C','D','E'] plt.pie([10,20,30,40,50], labels=label, autopct='%.1f%.. 공감수 4 댓글수 0 2020. 7. 9.
  • [Python] matplotlib - angle line graph 1. 기본 꺽은선 그래프 그리기 import matplotlib.pyplot as plt import random y = [] for _ in range(10): y.append(random.randint(1,100)) plt.plot(y) # 기본적으로 y축으로 설정 plt.show() 2. x축 범위 지정하기 plt.plot(range(10),y) # x축을 range(10) 지정 plt.show() * x축과 y축이 길이가 맞지 않으면 에러발생 "ValueError: x and y must have same first dimension, but have shapes ( ) and ( )" 3. 제목과 레이블 넣기 import matplotlib.pyplot as plt import random y1.. 공감수 3 댓글수 0 2020. 7. 8.
  • [Python] pandas 중복값 처리 (duplicates, drop_duplicates) 데이터 분석을 하다보면 특정 컬럼의 중복값을 제거해야 할 때가 있는데, pandas의 duplicates, drop_duplicates 메소드를 사용할 수 있다. duplicates( [ 'column' ], keep='first | last | False' ) : [ 'column' ] 에 대해서 중복이 있는지 확인 drop_duplicates( ['column'] , keep='first | last | False') : [ 'column' ] 중복값 처리 예제) 일자별 품목에 대한 금액 변동 DataFrame product = [['2020-01-01','T10001', 20000, 'BLACK'], ['2020-01-01','S10001', 10000, 'WHITE'], ['2020-01-01',.. 공감수 6 댓글수 0 2020. 4. 8.
  • [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.. 공감수 3 댓글수 0 2020. 2. 28.
  • [Python] split을 이용하여 pandas 컬럼 분리하기 import pandas as pd lst_A = ['banana 3','apple 5','orange 6','mango 7'] df = pd.DataFrame(lst_A, columns=['text']) df df['fruit'] = df.text.str.split(' ').str[0] df['count'] = df.text.str.split(' ').str[1] df 공감수 8 댓글수 0 2020. 2. 25.
  • [Python] replacement of Pandas dataframe NaN value fillna()은 "NaN" 값만을 변환. "NaN" 값만 처리할 경우 fillna()를 쓰면 되겠다. fillna()를 이용하여 "NaN" 값을 0 (Zero) 으로 대체 import pandas as pd import numpy as np list_A = [1, 2, 3, 4, np.nan, 6, 0 ] df = pd.DataFrame(list_A, columns=['value']) print(df['value']) df['value'] = df['value'].fillna(0) print(df['value']) ---------------------------------------------- 0 1.0 1 2.0 2 3.0 3 4.0 4 NaN 5 6.0 6 0.0 Name: value, dtyp.. 공감수 4 댓글수 0 2020. 2. 16.
  • [Python] padnas dataframe URL Decode Pandas Dataframe에서 URL Decode from urllib.parse import unquote import pandas as pd example = ['%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94', '%EC%95%84%EB%A6%84%EB%8B%B5%EB%84%A4%EC%9A%94', '%ED%8C%8C%EC%9D%B4%EC%8D%AC'] df = pd.DataFrame(example, columns=['url']) # URL Decode df['url'] = df.url.apply(lambda x : unquote(x)) print(df) ------------------------------------------------------------.. 공감수 4 댓글수 2 2020. 2. 16.
  • [Python] numpy.where 를 이용하여 컬럼을 다양한 데이터 타입과 비교 numpy.where(조건문, True 값, False 값) Sample DataSet import pandas as pd import numpy as np lst_A = {'제품':['milk','juice','bread','icecream'], '수량':[3,5,10,2], '제조일시':['2020-01-01 01:00:00','2019-12-20 15:01:00','2019-12-31 00:00:00','2020-01-02 02:03:01']} df = pd.DataFrame(lst_A) df['제조일시'] = pd.to_datetime(df['제조일시']) 1. '2020-01-01 00:00:00'를 기준으로 "유통기간" 새로운 컬럼을 만들고, True : "유효", False : "만료" 체크.. 공감수 2 댓글수 0 2020. 1. 21.
  • [Python] pandas dataframe 리스트로 변환 list 데이터를 pandas dataframe으로 만들기 import pandas as pd lst_A = ['a','b','c','d', 'e', 1, 2] df = pd.DataFrame(lst_A) print(df) list 타입으로 변환 import numpy as np np.array(df[0].tolist()) ----------------------------- array(['a', 'b', 'c', 'd', 'e', 'f', 'g'], dtype=' 공감수 4 댓글수 0 2019. 10. 30.
  • [Python] numpy setdiff1d(차집합)을 이용한 2개의 텍스트 파일 비교 numpy.setdiff1d(array1, array2) : 2개의 array의 차집합 A_file.txt B_file.txt Tomatoes are red Bananas are yellow Strawberries are red Oranges are orange Blackberries are black Tomatoes are red Bananas are yellow Blackberries are black import pandas as pd import numpy as np df_A = pd.read_csv('A_file.txt', names=['data_A']) df_B = pd.read_csv('B_file.txt', names=['data_B']) list_A = np.array(df_A['data.. 공감수 2 댓글수 0 2019. 10. 30.
  • [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['국어'] +.. 공감수 3 댓글수 0 2019. 10. 28.
  • [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 : 그룹화 .. 공감수 4 댓글수 0 2019. 10. 28.
  • [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 영자 .. 공감수 4 댓글수 0 2019. 10. 24.
  • [Python] Pandas를 이용한 IIS 웹 로그 분석 (sc-bytes, cs-bytes) sc-bytes : 어플리케이션(웹 사이트)에서 클라이언트로 보낸 bytes. cs-bytes : 클라이언트에서 어플리케이션(웹 사이트)로 보낸 bytes. IIS로그 필드 중 sc-bytes와 sc-bytes는 웹 사이트와 클라이언트간 통신양(bytes)를 숫자로 표기한 것으로 웹 사이트의 성능을 분석하는 데 있어 중요한 데이터이다. 특히, On-premise가 아닌 클라우드 환경에서 웹 사이트를 서비스할 경우 sc-bytes는 아웃바운드 트래픽을 가늠하기에 좋은 지표이기 때문에(아웃바운드 트래픽 = 요금) 유심깊게 점검하는 편이 좋다. IIS 웹 로그를 pandas dataframe 만들기 import pandas as pd log_field = ['date', 'time', 's-sitename',.. 공감수 2 댓글수 0 2019. 10. 23.
  • [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_.. 공감수 4 댓글수 0 2019. 9. 25.
  • [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 .. 공감수 4 댓글수 0 2019. 9. 6.
  • [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 .. 공감수 4 댓글수 0 2019. 9. 4.
  • [Python] pandas를 이용한 IIS log 파싱 python pandas를 이용한 iis weblog 파싱 import pandas as pd 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'] df = pd.read_csv('logfile', sep=' ', comm.. 공감수 2 댓글수 0 2019. 8. 30.
  • [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.. 공감수 1 댓글수 0 2019. 8. 29.
  • [Python] sqlite3 DB output to pandas dataframe. (sqlite3 db 퀄리결과 pandas dataframe 만들기) import pandas as pd import sqlite3 conn = sqlite3.connect(DB PATH) query = "select columns from table " df = pd.read_sql_query(query,conn) 공감수 1 댓글수 0 2019. 8. 12.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.