在做数据分析时,时常会用到 dataframe.to_sql 语句,把一些计算或分析好的数据加入到数据库中,一般的添加是很好操作的,直接设置一个参数即可:
import pandas as pd
import sqlite3 as sq3
conn = sq3.connect(db_file_name, detect_types=sq3.PARSE_DECLTYPES)
dataframe.to_sql(
table_name,
con=conn,
if_exists='append',
index=False
如果存在,就添加到后面去,但是如果我们数据中都是有唯一key的怎么办?比如更新用户信息,假如一个用户已经存在数据表中了,我们要怎么处理?
一个笨方法就是把数据全部读取出来,然后更改之后再一次写进去,这么做如果数据量过大,就会很慢。
除了这个,那就只能依靠数据库本身的功能了,REPLACE。
就是先把要更新的用户和新用户加入到一个临时表格中,然后运用REPLACE语句去替换或添加到用户表里头去
做法如下:
USER_TABLE_NAME = 'UserInfo'
# dft 是一个 dataframe 数据集
dft.to_sql('temp', conn, if_exists='replace', index=False) # 把新数据写入 temp 临时表
connection = conn.cursor()
# 替换数据的语句
args1 = f""" REPLACE INTO "{USER_TABLE_NAME}"
SELECT * FROM "temp"
connection.execute(args1)
args2 = """ DROP Table If Exists "temp" """ # 把临时表删除
connection.execute(args2)
connection.close()
conn.commit()
这样就可以把新数据更新到数据表中了~
用pandas对数据表中的数据进行更新,这里推荐一个掩膜处理,具体代码如下
dataFieldAll['E'] = 0
dataFieldValGood = dataFieldVal[dataFieldVal[fieldIndex]<0.8)]
dataFieldValGood['N']=1
# print('dataFieldValGood',dataFieldValGood.shape[0])
dataFieldAll = pd.merge(dataFieldAll, dataFieldValGo
I am attempting to query a subset of a MySql database table, feed the results into a Pandas DataFrame, alter some data, and then write the updated rows back to the same table. My table size is ~1MM r...
import pandas as pdimport numpy as npimport matplotlib.pyplot as plt创建一个Series,同时让pandas自动生成索引列s = pd.Series([1,3,5,np.nan,6,8])# 查看ss0 1.01 3.02 5.03 NaN4 6.05 8.0dtype: float64创建一个...
#导入需要的包,使用pymysql操作数据库
#pandas包很强大,可以直接读取数据表,创建dataframe数据结构,同时可以直接将dataframe导出到数据库
#sqlalchemy创建引擎,与数据库进行连接
import pymysqlimport pandas as pdimport sqlalchemyfrom sqlalchemy import create_enginefr...
name: 数据库中的表名
con: 与read_sql中相同,数据库连接的驱动
if_exits: 当数据库中的这个表存在的时候,采取的措施是什么,包括三个值,默认为fail
fail,若表存在,则不进行数据表写入的相关操作
replace:若表存在,将数据库表中的数据覆盖;
append:若表存在,将数据写到原表的后面。
index:是否将df
在另一篇文章中讲了利用PCA对图片数据进行降维,这次介绍一下另一种降维方法——LDA(Linear Discriminant Analysis),即线性判别分析。跟PCA不同,LDA是一种supervised的降维方法。即我们对数据降维时需要数据的label。
LDA的原理是要找到一个投影面,使得投影后相同类别的数据点尽可能的靠在一起,而不同类别的数据点尽可能的分开...
pandas使用loc函数更新、修改dataframe指定数据行的内容(update or change the content of specific row of dataframe)
什么是pandaspandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了大量能使我们快速便捷地处理数据的函数和方法。主要包含两种数据类型:Series和DataFrameSeries可以理解为dict的升级版本,主数组存放numpy数据类型,index数据存放索引DataFrame相当于多维的Series,有两个索引数...
一、前言最近做web网站的测试,遇到很多需要批量造数据的功能;比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据;本次构造数据主要涉及到在某个表里面批量添加数据、在关联的几个表中同步批量添加数据、批量查询某个表中符合条件的数据、批量更新某个表中符合条件的数据等。二、数据添加即批量添加数据到某个表中。insert_dat...
本文使用postgresql数据库,使用mysql等其他数据库时,需要在更改为如下情况,同时重写提交到mysql时使用的参数也应该做对应的修改,更新采用删除在添加的方式实现:
#连接mysql数据库
jdbcDF = spark.read.format("jdbc")\
.option("driver","com.mysql.jdbc.Driver")\
.option("url","jdbc:mysql://***.***.**.***:3306/Gadaite")\
最近处理公交数据,原数据存在SQL Server数据中。从前处理数据时师兄让导至csv中处理,然而能够处理的数据毕竟有限,因此尝试直接将python连至数据库,在这里将老鼠屎使用的方法和大家分享,如有错误也请看官批评指正。 在这里提前交代一下博主的使用环境。操作系统:windows7,python版本:python3.6。1 Python连接SQL Server数据库 博主使用...
来源:Python大数据分析1 简介就在几天前,pandas发布了其1.3版本,在这次新的版本中添加了诸多实用的新特性,今天的文章我们就一起来get其中主要的一些内容更新~2 pandas...
文章目录Series对象(一维)Numpy与Series创建Series对象DataFrame对象(二维)创建DataFrame对象Index对象
Series对象(一维)
Series对象是带有索引数据构成的数组,可以作为通用型的Numpy数组,也可以看作特殊的Python字典
import pandas as pd
data = pd.Series([0.25,0.5,0.75,1.0])
print(data)
'''数据和索引绑定在一起
0 0.25
1 0.50
2 0.75