第一:pandas.read_csv读取本地csv文件为数据框形式
1
|
|
第二:如果存在日期格式数据,利用pandas.to_datatime()改变类型
1
|
data.iloc[:, 1 ] = pd.to_datetime(data.iloc[:, 1 ])
|
注意:=号,这样在原始的数据框中,改变了列的类型
第三:查看列类型
print(data.dtypes)
第四:方法一:保存至MYSQL【缺点耗时长】
利用MYSQLdb库,封装成一个类,实现创建表,添加数据的操作,缺点耗时长
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
class Jess_mysql():
"""
设置mysql类,实现创建数据框,表,及添加数据
"""
def __init__( self ):
self .mysql = MySQLdb.connect(user = mysql_name,host = mysql_host,password = mysql_password,database = mysql_database)
self .conn = self .mysql.cursor()
def create_table( self ,table_names,col_names):
"""
创建表
:param table_names: 表名
:param col_names: 列名,列表格式
:return:
"""
tables = ' varchar(20),' .join([ '%s' ] * len (col_names))
sql_yuju = 'create table if not exists `{t}` ({v} varchar(20))' . format (t = table_names,v = tables) #字段需要标注格式
ss = sql_yuju % ( tuple (col_names))
print (ss)
self .conn.execute(ss)
self .mysql.commit()
def add_data( self ,table_name,col_names,col_data):
"""
:param table_name: 表名
:param col_names: 列名,字段名
:param col_data: 字段值
:return:
"""
colname = ',' .join([ '%s' ] * len (col_names))
data = ',' .join([ '%s' ] * len (col_data))
sql_yuju = 'INSERT INTO `{t}` ({name}) VALUES ({data});' . format (t = table_name,name = colname,data = data)
ss = sql_yuju % ( * col_names, * col_data)
#print(ss)
self .conn.execute(ss)
self .mysql.commit()
|
第五:利用sqlalchemy的create_engine()方法
1、创建连接
1
2
3
4
|
import sqlalchemy
#engine=sqlalchemy.create_engine('mysql + mysqldb://root:123456@118.24.26.227:3306/python_yuny')
engine = sqlalchemy.create_engine( 'mysql+mysqldb://{user}:{password}@{host}:3306/{database}' . format
(user = mysql_name,password = mysql_password,host = mysql_host,database = mysql_database))
|
2、利用pd.io.sql.to_sql()
1
|
pd.io.sql.to_sql(frame = data,name = 'yunying' ,con = engine,index = False ,if_exists = 'append' )
|
注意相关参数的设置。
此外,保存到mysql中,需要注意日期格式的列,因为在mysql对应的field设置格式为varchar(20)后,原始的日期2015-8-9,写入数据库,只有2015,这需要两步操作。
a、上面第二目录的,利用pandas.to_datetime(,format='%Y-%m-%d') #format的格式要和原始字符2016-8-9格式一样
b、利用datetime库,实现format='%Y%m%d'
1
2
3
4
|
x = data.shape[ 0 ]
for i in range (x):
col_data = list (df.iloc[i,:])
col_data[ 1 ] = datetime.date.strftime(col_data[ 1 ], '%Y%d%m' )
|
•这一步后,日期格式由原始的2016-6-2,转为20160606,就可以以写入数据库对应的字段【其字段类型varchar(20)】
第六:读取mysql的数据
1
|
df = pd.read_sql( 'select * from %s' % table_name,con = engine,index_col = None )
|
默认不设置索引列,可以自行指定索引列名。
总结
以上所述是小编给大家介绍的使用python的pandas库读取csv文件保存至mysql数据库,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://blog.csdn.net/Jesszen/article/details/81839163