mg4377娱乐娱城官网_mg4377娱乐手机版_www.mg4377.com

python与php完毕分割文件代码,读取MySQL数据和插入

时间:2019-06-04 17:17来源:mg4377娱乐手机版
正文研讨的要害是Python编制程序通过pandas将数据分割成时间跨度相等的数据块的连带内容,具体如下。 python使用pandas达成数据分割实例代码,pythonpandas 本文钻探的严重性是Python编制程

正文研讨的要害是Python编制程序通过pandas将数据分割成时间跨度相等的数据块的连带内容,具体如下。

python使用pandas达成数据分割实例代码,pythonpandas

本文钻探的严重性是Python编制程序通过pandas将数据分割成时间跨度相等的数据块的有关内容,具体如下。

先上数据,有如下dataframe格式的多寡,列名分别为date、ip,我索要总计每伍s内出现的ip,以及这个ip出现的频数。

 ip   date
0 127.0.0.21 15/Jul/2017:18:22:16
1 127.0.0.13 15/Jul/2017:18:22:16
2 127.0.0.11 15/Jul/2017:18:22:17
3 127.0.0.11 15/Jul/2017:18:22:20
4 127.0.0.21 15/Jul/2017:18:22:21
5 127.0.0.13 15/Jul/2017:18:22:22
6 127.0.0.14 15/Jul/2017:18:26:36
7 127.0.0.16 15/Jul/2017:18:32:15
8 127.0.0.11 15/Jul/2017:18:36:03

python与php完毕分割文件代码,读取MySQL数据和插入的实例。在英特网找了很久然则没来看python的连带答案,但在stackoverflow找到了大切诺基语言的解法,有意思味能够看看。

受它的启示,笔者用不太优雅的主意贯彻了自己的急需,有更加好化解方法的请不吝赐教:

python 代码如下:

前二日有个对象说,想达成二个文本文件遵照一定行数实行私分成四个文件文件,却不知什么促成。借使数据量小手动分割下就好了,假如数据量一点都不小的话手动实现实在太开销人力了,也不具体。那么就须求注重脚本去贯彻。既然有意中人想差非常的少的到位那些职务,那么比不上记录下来,给须求的恋人提供方便。

先上数据,有如下dataframe格式的数目,列名分别为date、ip,笔者供给总括每5s内冒出的ip,以及那几个ip出现的频数。

step一: 将数据中国和东瀛期格式变为规范格式

#date_ip为我的dataframe数据
date_ip['date'] = pd.to_datetime(date_ip['date'], format='%d/%b/%Y:%H:%M:%S')
# -*- coding:utf-8 -*-
import pandas as pd
import pymysql
import sys
from sqlalchemy import create_engine

def read_mysql_and_insert():

 try:
  conn = pymysql.connect(host='localhost',user='user1',password='123456',db='test',charset='utf8')
 except pymysql.err.OperationalError as e:
  print('Error is ' str(e))
  sys.exit()

 try:
  engine = create_engine('mysql pymysql://user1:123456@localhost:3306/test')
 except sqlalchemy.exc.OperationalError as e:
  print('Error is ' str(e))
  sys.exit()
 except sqlalchemy.exc.InternalError as e:
  print('Error is ' str(e))
  sys.exit()

 try: 
  sql = 'select * from sum_case'
  df = pd.read_sql(sql, con=conn) 
 except pymysql.err.ProgrammingError as e:
  print('Error is ' str(e))
  sys.exit() 

 print(df.head())
 df.to_sql(name='sum_case_1',con=engine,if_exists='append',index=False)
 conn.close()
 print('ok')

if __name__ == '__main__': 
 df = read_mysql_and_insert()

下边笔者就分别采取python和php实行脚本的兑现和操作,当然用别样语言都能落实,大家可依据对语言的熟谙程度实行自主选用,倘使有相恋的人还尚未达到编写代码的力量来说,那么最起码对语言蒙受的行使要会,只要到达那几个,就足以做到如下工作。演示如下:

 ip   date
0 127.0.0.21 15/Jul/2017:18:22:16
1 127.0.0.13 15/Jul/2017:18:22:16
2 127.0.0.11 15/Jul/2017:18:22:17
3 127.0.0.11 15/Jul/2017:18:22:20
4 127.0.0.21 15/Jul/2017:18:22:21
5 127.0.0.13 15/Jul/2017:18:22:22
6 127.0.0.14 15/Jul/2017:18:26:36
7 127.0.0.16 15/Jul/2017:18:32:15
8 127.0.0.11 15/Jul/2017:18:36:03

step二: 将数据的伊始时间、甘休时间,按伍s分割(由于岁月段只怕不是刚刚是5s的倍数,为防止最终二个时刻不见,由此在终极加上5s)

frequency = 5
time_range = pd.date_range(date_ip['date'][0],
    date_ip['date'][date_ip.shape[0]-1]
     frequency*Second(), freq='%sS'%frequency)

其它须要小心的还或许有。

譬喻我们要对A.txt文件进行私分,依照5行1分割,分割成多少个txt文件。

在互连网找了很久可是没看出python的有关答案,但在stackoverflow找到了中华V语言的解法,有乐趣可以看看。

step三: 将date变为索引

date_ip = date_ip.set_index('date')

step4: 对各类时间段内的多寡开始展览频数计算(由于通过标签切块时会包蕴头、尾数据,为防止重新计算,由此在后面部分减壹s)

for i in xrange(0,len(time_range)-1):
 print get_frequency(date_ip.loc[time_range[i]:time_range[i 1]-1*Second()])

一) test数据Curry有四个表,建表语句如下:

图片 1

受它的开导,我用不太优雅的不贰秘技贯彻了自家的须要,有更加好消除措施的请不吝赐教:

壹体化的代码

import pandas as pd
from pandas.tseries.offsets import Second
def get_frequency(date_ip):
 ip_frequency = {}
 for i in xrange(0,date_ip.shape[0]):
 ip_frequency[date_ip['ip'][i]] = ip_frequency.get(date_ip['ip'][i], 0)   1
 return ip_frequency,date_ip.shape[0]

if __name__ == '__main__': 
 date_ip['date'] = pd.to_datetime(date_ip['date'], format='%d/%b/%Y:%H:%M:%S')

 frequency = 5
 time_range = pd.date_range(date_ip['date'][0], date_ip['date'][date_ip.shape[0]-1]
     frequency*Second(), freq='%sS'%frequency) 
 date_ip = date_ip.set_index('date')
 for i in xrange(0, len(time_range) - 1):
 print get_frequency(date_ip.loc[time_range[i]:time_range[i   1]-1*Second()])

小说开头数据运维结果:

({'127.0.0.21' : 1, '127.0.0.13' : 1, '127.0.0.11' : 2}, 4)
({'127.0.0.21': 1, '127.0.0.13': 1}, 2)
({'127.0.0.14': 1}, 1)
({'127.0.0.16': 1}, 1)
({'127.0.0.11': 1}, 1)
CREATE TABLE `sum_case` ( 
 `type_id` tinyint(2) DEFAULT NULL, 
 `type_name` varchar(5) DEFAULT NULL, 
 KEY `b` (`type_name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


CREATE TABLE `sum_case_1` ( 
 `type_id` tinyint(2) DEFAULT NULL, 
 `type_name` varchar(5) DEFAULT NULL, 
 KEY `b` (`type_name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

A.txt文件为要分开的测试数据,笔者成立了2一条数据,如下:

编辑:mg4377娱乐手机版 本文来源:python与php完毕分割文件代码,读取MySQL数据和插入

关键词: