2018-07-10 17:17:54 tcy23456 阅读数 1168
  • Python-数据

    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。

    10913 人正在学习 去看看 尹成
import time


import pymysql
import pymysql.cursors
import mysql.connector as con


start=time.time()
# 打开数据库连接(ip/数据库用户名/登录密码/数据库名)


db = pymysql.connect(host="localhost",
user='root',password='root',
database='new_futures')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()


# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("Database version : %s " % data)


# 关闭数据库连接
db.close()
print('time1=',time.time()-start)


#---------------------------------------------------------------
start=time.time()


db=con.connect( host="localhost",
user='root',password='root',
database='new_futures')


# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()


# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("Database version : %s " % data)


# 关闭数据库连接
db.close()
print('time2=',time.time()-start)
#------------------------------------------------------------------
start=time.time()
##import MySQLdb.cursors
db=pymysql.connect(
    host="localhost",user="root",
    passwd="root",db="new_futures",
    cursorclass = pymysql.cursors.SSCursor)
##cursor=connection.cursor()
##cursor.execute(query)
##for row in cursor:
##    print(row)
cursor = db.cursor()


# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("Database version : %s " % data)
db.close()

print('time3=',time.time()-start)


>>> 


Database version : 8.0.11 
time1= 0.019001245498657227
Database version : 8.0.11 
time2= 0.6510369777679443
Database version : 8.0.11 
time3= 0.005000591278076172

>>> 

可以看出用pymysql模块加载class的方法最好

2016-03-24 20:02:00 chenxuan5849 阅读数 40
  • Python-数据

    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。

    10913 人正在学习 去看看 尹成

    在用Python读一个两个多G的txt文本时,天真的直接用readlines方法,结果一运行内存就崩了。

    还好同事点拨了下,用yield方法,测试了下果然毫无压力。咎其原因,原来是readlines是把文本内容全部放于内存中,而yield则是类似于生成器。

 

代码如下:

def open_txt(file_name):
    with open(file_name,'r+') as f:
        line = f.readline()
        while line:
            yield line.strip()
            line = f.readline()

 

 

调用实例:

for text in open_txt('aa.txt'):
    print text

 

 

转载于:https://my.oschina.net/jhao104/blog/646905

2019-11-28 09:42:15 peiwang245 阅读数 47
  • Python-数据

    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。

    10913 人正在学习 去看看 尹成

 python 读文件数据并画图代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import re
import os
import glob
import seaborn as sns
sns.set_style('white')#画布为白底
filedir = os.listdir('./')
fileref = glob.glob(r'C:\Users\admin\Desktop\算例网格文件\qblcb参考\*.txt')
x='0_iL_12'
targetfile = [name for name in filedir if x in name]
for filename in targetfile:
    keyword = re.search('x_(\d+\.\d+?|\d+?)_y',filename).group(1)
    targetfileref = [name for name in fileref if keyword in name]
    datafile = pd.read_csv(filename,sep = ' ',encoding = 'utf-8')
    datafileref = pd.read_csv(targetfileref[0], sep = '\s{3}',names='01',skiprows=[0,1,2,3], encoding = 'ANSI',engine='python')
    datafile.columns=['1','2','3','4','5','6','7','8']
    plt.plot(datafile.iloc[10:,0],datafile.iloc[10:,4],'b-')
    plt.plot(datafileref.iloc[:,0],(datafileref.iloc[:,1]+40)/100,'bo',markersize=12,markerfacecolor='none')
    plt.xlabel('time(s)')
    plt.ylabel('eta(m)')
    sub=max(datafile.iloc[10:,4])-min(datafile.iloc[10:,4])
    plt.xlim(33,39)
    plt.ylim(0.35,0.45)
    #注意以下坐标轴变化
    plt.gca().xaxis.get_major_formatter().set_powerlimits((0,1)) 
    plt.gca().yaxis.get_major_formatter().set_powerlimits((0,1)) #坐标轴科学计数法设置x轴坐标有效位数为1位
    ylm = list(plt.gca().get_ylim())#元胞转为列表
    ylm[0]*=1.3
    ylm[1]*=1.3
    plt.ylim(ylm)
    plt.xlim(left=34)
    plt.title(keyword)
    plt.grid(alpha=0.4)#添加网格,alpha控制网格线虚实
    plt.savefig(keyword+'.png')   
    plt.show()
 

1.python 读数据文件比如text或者其他形式

os.listdir()函数读文件路径下所有文件,参数为函数路径

glob.blob()函数读目录下特定格式文件,参数为文件格式后缀

具体用法如:

filedir = os.listdir('./')
fileref = glob.glob(r'C:\Users\admin\Desktop\算例网格文件\qblcb参考\*.txt')

2.从文件列表中选择包含特定字符的文件组成列表

x='0_iL_12'
targetfile = [name for name in filedir if x in name]

targetfile所有文件都包含‘0_iL_12’字符。
3.读特定包含字符的文件数据,采用正则表达式

 keyword = re.search('x_(\d+\.\d+?|\d+?)_y',filename).group(1)
#'x_(\d+\.\d+?|\d+?)_y'匹配整数或者浮点型数据

4.读文件数据

datafileref = pd.read_csv(targetfileref[0], sep = '\s{3}',names='01',skiprows=[0,1,2,3], encoding = 'ANSI',engine='python')

pd.read_csv()函数,返回类型为DataFrame类型

第一个参数为待读取目标文件,

sep参数:文件数据分隔符,本例数据为列间间隔为三个空格‘\s{3}’。如果不指定参数,则会尝试使用逗号分隔。分隔符长于一个字符并且不是‘\s+’,将使用python的语法分析器。

names参数给DataFrame列命名。用于结果的列名列表,如果数据文件中没有列标题行,就需要执行 header=None。names属性在header之前运行默认列表中不能出现重复,除非设定参数mangle_dupe_cols=True。

skiprows参数:跳过特定行读数据。需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)。

encoding参数:数据文件编码格式

engine=‘python’解决报错错误

ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
  datafileref = pd.read_csv(targetfileref[0], sep = '\s{3}',names='01',skiprows=[0,1,2,3], encoding = 'ANSI')

5.   plt.show()在plt.savefig(keyword+'.png')   下一行,否则保存图片为空白。

6. 均方根误差求和

rmse = sum([(x - y) ** 2 for x, y in zip(u,u_ref)]) / len(u)


   

2019-03-07 15:03:26 u011119817 阅读数 80
  • Python-数据

    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。

    10913 人正在学习 去看看 尹成

在用python做机器学习的时候,有时候训练或测试数据特别大,一个文件就有几个G,如何高效读取,不使机器内存爆炸呢,以我自己的工作经历来说,读取一个特别大的二进制文件来做测试,有几个G的大小,但每次只测batch size =100个样本。这样可以使用迭代器:

import numpy as np
#我们读的是保存浮点数的二进制文件 test_data.dat ,由连续的1+500=label+data的据组成
def data_read(file_path):
	with open(file_path,'rb') as f:
		wile True:
			data_labels = f.read(100*4*(1+500)) #每次100个数据,每个数据有501个数,每个数有4个字节
			if data_labels:
				#做数据预处理
				data_labels = np.frombuffer(data_labels,dtype=np.float32)
				#用生成器返回
				yield data_labels
			else
				return #如果读到文件末尾,则退出
#以下定义测试函数
def test(data_labels):
	data_labels = np.reshape(data_labels,(-1,501))
	datas = data_labels[:,1:]
	labels = data_labels[:,0]
	preds = model(datas)
	   ......
#可以进行测试使用
for data_labels in data_read(file_path):
	.....
	output=test(data_labels)

以上就是使用流程,可以根据自己业务需求进行修秘诀

利用python读csv数据

阅读数 606

python从文件读数据

阅读数 1077

没有更多推荐了,返回首页