iiliiiili 2019. 12. 12. 17:17

yum install -y python36u python36u-libs python36u-devel python36u-pip

 

yum install -y https://centos7.iuscommunity.org/ius-release.rpm

 

#!env python

import pandas as pd

 

# CSV 파일 읽어들임

DF = pd.read_csv('sql.csv')

 

# 변수명에 빈칸 지원 안되니 열 이름 읽어들여서 ' '를 '_'로 치환.

DF.columns = [c.replace(' ', '_') for c in DF.columns]

 

# 기간에서 초단위 이하 없애(정규식 이용한 치환)고 기간 오름차순 정렬

DF.기간 = DF.기간.str.replace(':\d\d ', ' ')

DF.기간 = DF.기간.str.replace(':\d\d,', ',')

DF.공격자 = DF.공격자.str.replace(r':\d+', '')

print(DF.공격자)

DF = DF.sort_values(["기간"], ascending=[True])

DF = DF.reset_index(drop=True)

 

'''

# Groupby로 기간 - 공격자 묶었을 때

COL_COUNT = DF.groupby([DF.기간.tolist(), DF.공격자.tolist()], as_index=False).size()

print(COL_COUNT)

COL_COUNT.to_csv('result.csv', encoding='cp949')

# Groupby 블록 여기까지

'''

 

# '공격자'를 하나 저장해서 값이 바뀌지 않으면 COUNT 증가, 바뀌면 초기화.

#  COUNT 를 배열로 저장했다가 loop 종료 후 데이터프레임(DF) 열에 추가함.

# 개선해야 할 점

#    1. 기간이 동일한 경우

#    2. IP까지 같아야 COUNT 증가하게 수정 필요

P_IP = DF.공격자[0]

COUNT = 0

ARR_COUNT = []

 

for C_IP in DF.공격자:

    if C_IP == P_IP:

        COUNT = COUNT+1

        ARR_COUNT.append(COUNT)

        #print(ARR_COUNT[-1], C_IP, P_IP)

        P_IP = C_IP

    else:

        COUNT = 1

        ARR_COUNT.append(COUNT)

        #print(ARR_COUNT[-1], C_IP, P_IP)

        P_IP = C_IP

 

# COUNT 열에 값 넣어주면 됨.

DF['COUNT_col'] = ARR_COUNT

 

#print(DF)

DF.to_csv('result.csv', encoding='cp949')