在数据分析时,我们有中间结果,或者最终的结果,需要保存到数据库中;或者我们有一个中间的结果,如果放到数据库中通过sql操作会更加的直观,处理后再将结果读取到DataFrame中。这两个场景,就需要用到DataFrame的to_sql操作。
具体的操作
连接数据库代码
import pandas as pd
from sqlalchemy import create_engine
default
engine = create_engine(‘mysql+pymysql://ledao:ledao123@localhost/pandas_learn’)
original_data = pd.read_sql_table(‘cellfee’, engine)
original_data
结果如下所示。
all_cells = []
for k, v in original_data.groupby(by=[‘cityid’, ‘cellid’]):
onecell = pd.Series(data=[k[0], k[1], v[‘fee’].sum()], index=[‘cityid’, ‘cellid’, ‘fee_sum’])
all_cells.append(onecell)
all_cells = pd.DataFrame(all_cells)
all_cells.to_sql(name=’cells_fee’, con=engine, chunksize=1000, if_exists=’replace’, index=None)
对于DataFrame的to_sql函数,需要注意的参数在代码中已经写出来,其中比较重要的是chunksize、if_exists和index。
chunksize可以设置一次入库的大小;if_exists设置如果数据库中存在同名表怎么办,’replace’表示将表原来数据删除放入当前数据;’append’表示追加;’fail’则表示将抛出异常,结束操作,默认是’fail’;index=接受boolean值,表示是否将DataFrame的index也作为表的列存储。
保存该表的最终结果如下图所示。
[En]
The final result of saving the table is shown in the following figure.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家支持剧本之家。
[En]
The above is the whole content of this article, I hope it will be helpful to your study, and I also hope that you will support the script Home.
Original: https://blog.csdn.net/weixin_33444829/article/details/113340595
Author: 军师·Sun
Title: dataframe存到mysql中_pandas实现to_sql将DataFrame保存到数据库中
相关阅读
Title: python删除dataframe特定列_pandas.DataFrame删除/选取含有特定数值的行或列实例
1.删除/选取某列含有特殊数值的行
import pandas as pd
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
df1=pd.DataFrame(a,index=[‘row0′,’row1′,’row2’],columns=list(‘ABC’))
print(df1)
df2=df1.copy()
删除/选取某列含有特定数值的行
df1=df1[df1[‘A’].isin([1])]
df1[df1[‘A’].isin([1])] 选取df1中A列包含数字1的行
df1=df1[~df1[‘A’].isin([1])]
通过~取反,选取不包含数字1的行
print(df1)
运行结果:

2.删除/选取某行含有特殊数值的列
删除/选取某行含有特定数值的列
cols=[x for i,x in enumerate(df2.columns) if df2.iat[0,i]==3]
利用enumerate对row0进行遍历,将含有数字3的列放入cols中
print(cols)
df2=df2[cols] 选取含有特定数值的列
df2=df2.drop(cols,axis=1) #利用drop方法将含有特定数值的列删除
print(df2)
运行结果:

3.删除含有空值的行或列
实现思路:利用pandas.DateFrame.fillna对空值赋予特定值,再利用上文介绍的方法找到这些含有特定值的行或列去除即可。
import pandas as pd
import numpy as np
df1 = pd.DataFrame(
[
[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, 5],
[np.nan, 3, np.nan, 4]
],columns=list(‘ABCD’))
print(df1)
df2=df1.copy()
df1[‘A’]=df1[‘A’].fillna(‘null’) #将df中A列所有空值赋值为’null’
print(df1)
df1=df1[~df1[‘A’].isin([‘null’])]
print(df1)
删除某行空值所在列
df2[0:1]=df2[0:1].fillna(‘null’)
print(df2)
cols=[x for i,x in enumerate(df2.columns) if df2.iat[0,i]==’null’]
print(cols)
df2=df2.drop(cols,axis=1)
print(df2)
运行结果:

以上这篇pandas.DataFrame删除/选取含有特定数值的行或列实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持找一找教程网。
Original: https://blog.csdn.net/weixin_35822534/article/details/113507657
Author: 7323
Title: python删除dataframe特定列_pandas.DataFrame删除/选取含有特定数值的行或列实例
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/314358/
转载文章受原作者版权保护。转载请注明原作者出处!