通过python读写MySQL进行数据预处理的具体例子

3 篇文章 0 订阅
1 篇文章 0 订阅

python对MySQL数据表数据进行预处理

下面代码(超简单[随意])是针对具体的例子。练习数据随后会上传txt格式,可以下载使用。
数据形式如图:
用户对自己喜欢的汽车进行收藏的数据
基于上图格式的数据进行一下操作:
i)将car_id转换成以空格作为分隔符的形式,如将“470,657”转换成“470 657”;
ii)筛选出收藏个数大于等于3的user_id及car_id;
iii)将转换好格式的数据保存到MySQL数据库中的一个新建表中。

由于没有学习过SQL语句,以及python处理数据的便捷性,便用最基本的python语句进行读写mysql数据库和进行数据处理。

具体代码和注释如下:

# _*_ coding:utf_*_
'''
i)将mysql数据表的数据读入,将逗号分割的数据转换成空格分隔(也可以转换成其他分隔符)。
ii)筛选出用户收藏个数大于3的数据,单独保存
iii)将列表数据重新保存到mysql中新建的处理后数据表中
'''
import pymysql

#创建连接到数据库(host,user,passwd,db根据自己的数据库信息填写主机名、用户名、密码和数据库名。
connection = pymysql.connect(host='xxxxxxx',user='xxxx',passwd='xxxxxx',db='xxx',charset='utf8')
#使用cursor()方法获得操作游标
cursor = connection.cursor()
#写要执行的sql语句(将数据全部导入到python中,导入数据为元组格式tuple数据)
sql = 'select * from user_car_collection_1'
print('loading data from database...')
#执行sql语句
cursor.execute(sql)
print('finish loading')
#使用fetchone()方法获取数据
all = cursor.fetchall()
#print(all)
print(all[1][1])
print(len(all))
print(type(all))

#筛选满足条件的收藏个数大于3的数据并保存
print('selecting data...')
data_morethan3 = []
for i in range(len(all)):
	if len(all[i][1].split(','))>=3:
		data_morethan3.append(all[i])
#print(data_morethan3)
print('selecting is done')
print(len(data_morethan3))
#将个数大于3的数据用空格分隔符连接,并于user_id保存成字典
print('saving the data as dictionary')
user_collect_morethan3 = {}
for j in range(len(data_morethan3)):
	collect = data_morethan3[j][1].split(',')[0]
	for k in range(len(data_morethan3[j][1].split(','))-1):
		collect += ' '+data_morethan3[j][1].split(',')[k+1]
	user_collect_morethan3[data_morethan3[j][0]] = collect
#print(user_collect_morethan3)

def dic2sql(dic,aql_1):
	sf=''
	for key in dic:
		tup = (key,dic[key])
		sf += (str(tup) + ',')
	sf = sf.rstrip(',')
	sql2 = sql_1 % sf
	return sql2

print('saving the data to database...')
sql_1 = 'insert into user_collect_split1 (user_id,car_id) values %s'#将字典数据插入到mysql数据库表中
ret = dic2sql(user_collect_morethan3,sql_1)
cursor.execute(ret)
print('Done')
connection.commit()
cursor.close()
connection.close()

程序运行过程中的提示信息如下:
在这里插入图片描述
处理后的结果如下:
在这里插入图片描述
参考博文:
[1]https://blog.csdn.net/lylfv/article/details/82287784

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值