Hello 大家好

本篇内容我想和大家分享一下Python和Mysql数据库的交互。数据库里面保存着我们所需要的数据,Mysql又是当今IT行业中比较大规模应用的一款数据库软件,所以今天我就和大家分享一下如果使用Python读取我们的Mysql文件。

首先,我们需要知道,Python在和Mysql交互时比较重要的一个包:Pymysql, 有了这个包之后,我们就可以自定义数据连接,然后去拿到我们需要的数据了!上代码:

import pymysqlconn = pymysql.connect(host = "localhost",port = 3306,user = 'root',password= '你数据库的密码',database= 'mysql',charset='utf8'
)

这样呢,我们就定义好了mysql数据库的连接,那么如何测试我们是否连接成功了呢?我们可以从库里面找一张表,然后查询里面的数据并且打印出来。我们首先需要定义一个Cursor游标,这个游标的作用就是运行sql语句,关闭数据库链接等。

import pymysql
conn = pymysql.connect(host = "localhost",port = 3306,user = 'root',password= '你数据库的密码',database= 'mysql',charset='utf8'
)
# 创建游标
cursor = conn.cursor()
# sql语句书写
sql = "select * from test"
# 执行sql
cursor.execute(sql)
# 将sql语句查询到的内容全都保存到data变量中
data = cursor.fetchall()
# 关闭数据库连接
cursor.close()
# 打印查询到的所有内容
print(data)

现在!保存数据库到CSV文件中!首先我们需要导入csv包,这里我们顺便把pandas包也导入进来!pandas包是用来后期读取csv文件的库。(如果还没有安装pandas包的话,可以在命令行中使用pip命令安装:pip3 install pandas, 其他包也可以使用这个命令去进行安装)

import pymysql
import csv
import pandas as pd
conn = pymysql.connect(host = "localhost",port = 3306,user = 'root',password= '你数据库的密码',database= 'mysql',charset='utf8'
)
# 创建游标
cursor = conn.cursor()
# sql语句书写
sql = "select * from test"
# 执行sql
cursor.execute(sql)
# 将sql语句查询到的内容全都保存到data变量中
data = cursor.fetchall()
# 关闭数据库连接
cursor.close()
# 打印查询到的所有内容
print(data)# 定义一个标题行
header = ('header1', 'header2', 'header3', 'header4', 'header5', 'header6')
with open ("c.csv", "w+", newline = "") as file:pen = csv.writer(file)pen.writerow(header)# 遍历data中的每一行,并且转换为列表格式 (默认 tuple)for i in data:a = list(i)pen.writerow(a)   

现在我们已经把数据写入到了csv文件中了,现在我们需要使用pandas包读取csv文件并且打印出来:

import pymysql
import csv
import pandas as pd
conn = pymysql.connect(host = "localhost",port = 3306,user = 'root',password= '你数据库的密码',database= 'mysql',charset='utf8'
)
# 创建游标
cursor = conn.cursor()
# sql语句书写
sql = "select * from test"
# 执行sql
cursor.execute(sql)
# 将sql语句查询到的内容全都保存到data变量中
data = cursor.fetchall()
# 关闭数据库连接
cursor.close()
# 打印查询到的所有内容
print(data)
# 定义一个标题行
header = ('header1', 'header2', 'header3', 'header4', 'header5', 'header6')with open("c.csv", "w+", newline = "") as file:pen = csv.writer(file)pen.writerow(header)# 遍历data中的每一行,并且转换为列表格式 (默认 tuple)for i in data:a = list(i)pen.writerow(a)  # 因为中文字符编码一般都是使用gbk,打开csv文件的时候增加encoding = "gbk",不然会字符乱码报错data2 = pd.read_csv("c.csv", encoding = "gbk")print(data2.head())

现在我们就完成了从Python读取数据库数据到本地并且打印出来的全过程啦!当然,我们不仅能将数据保存为csv格式,我们也能把数据保存成excel文件,这些都是可以的。

现在我们换一个数据集,我从kaggle官网上面下载了一个数据集,数据集的名称是加州房价预测,链接为:California Housing Data (1990) | Kaggle。下面我将针对这个数据集使用numpy,pandas,matplotlib对这个数据集进行绘图,大家如果感兴趣的话也可以去官网上下载这个数据集试一下~

我们打开一个新的文件(下面的绘制过程我将使用Jupyter Notebook进行),创建好文件之后我们需要导入需要的三个包,在后面绘图的时候我们还需要导入request库以及map库。导入之后我们就要先读区我们的csv文件,也就是我们的数据集,数据集的名字是housing。

现在我们需要看一下数据集的质量,我们可以通过文件名.info()的方式去进行查看,我们可以很清楚的看到total_bedrooms的数据行数为20433,然而别的特征对应的行数为20640,所以我们可以理解为这一行里面是有空值的,因为我们可以看到non-null的数量为20433,null的数量应该有200多条数据。接下来我们就可以通过数据集.dropna() 以及数据集.drop_duplicates()去清理我们数据集中的空值还有重复值。

删除完之后(如下图),我们就可以发现现在所有的特征所对应的行数都保持一致了,接下来我们就可以绘图了!

对了,绘图之前,我们可以通过数据集.head()再查看一下我们数据集的质量,如果数据集里面有的特征是含有单位的,我们就需要把数据集里面的单位给去掉,具体去掉的方法我可以先给大家附上一个代码,大家如果有需要的话可以直接使用就好。

代码说明:创建一个numpy类型的空数组,我们可以查看数据集中的哪一个特征值(列)是有单位并且需要我们改动的,我们就将这一列保存到一个变量中,然后循环这个变量。np.array(i[:-2])的-2表示每一个数据的最后两个字符,比如“千米”,“千克”这样的我们就可以通过这样的形式将它忽略到,如果是“平方米的话”,我们就需要遍历我们的数据到-3,也就是倒数第三个位置的地方去将单位忽略掉,然后不断的保存到我们的创建的列表中。最后再将我们替换完成的数据列放入到我们的原数据集housing中,替换原来数据集的特征列就可以了。

datalist = np.array([])
temp = housing["特征名"].valuesfor i in temp2:datalist = np.append(datalist,np.array(i[:-2]))
datalisthousing.loc[:,"特征名"] = datalist

上面只是如果我们有需要替换的(去掉单位)的情况我们才需要进行的步骤,我们可以接续绘图~

我们使用pyplot中的plot,去将我们数据集中的经纬度在我们的散点图中泼洒出来:

housing.plot(kind="scatter", x='longitude', y='latitude', alpha=0.1)

这样的效果如果不清楚的话,我们可以继续添加一些内容:

housing.plot(kind="scatter", x="longitude", y="latitude", alpha=0.4,s=housing["population"]/100, label="population",c="median_house_value", cmap=plt.get_cmap("jet"), colorbar=True,)

根据数据分布我们不难发现,颜色越偏暖色代表房价越高,我们可以看到加州的房价比较高的地方是偏向于加州整体的西南部,我们也可以通过添加地图的形式,更清楚的观察到这一点。(此处特别感谢b站up主大扬笔谈录给予的灵感!) 代码如下:

(我们需要导入request包还有os包,包括一会儿引入地图的时候我们也需要去引入map有关的包)

import urllib.request
import os
PROJECT_ROOT_DIR = "."
images_path = os.path.join(PROJECT_ROOT_DIR,"images","housing")
os.makedirs(images_path,exist_ok = True)
DOWNLOAD_ROOT = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fgdcoast.com%2Fimages%2Fwiki%2FUSA%2FCalifornia%2Fmaps%2Fcalifornia_cities_map.png&refer=http%3A%2F%2Fgdcoast.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1671804049&t=33441ad8576f0d76e775084ae7e7b370"
filename = "california.png"
print("Downloading",filename)
url = DOWNLOAD_ROOT + "images/housing/" + filename
opener = urllib.request.URLopener()
opener.addheader('User-Agent','whatever')
opener.retrieve(url,os.path.join(images_path,filename))

现在我们就可以看到,california.png图片已经保存到我们的目录下面啦!

最后,我们就可以在我们原有的散点图的基础上,将我们从网上下载的地图图片读入到我们的画布上,并且调整好尺寸,已经横纵坐标对应的经纬度信息,我们就可以得到如下的效果了:

代码如下:

import matplotlib.image as mpingcalifornia_img = mping.imread(os.path.join(images_path,filename))
ax = housing.plot(kind="scatter",x="longitude",y="latitude",figsize=(10,7),s=housing['population']/100,label="Population",c="median_house_value",cmap=plt.get_cmap("jet"),colorbar=False,alpha=0.4)
plt.imshow(california_img,extent=[-124.55,-113.80,32.45,42.05],alpha=0.5,cmap=plt.get_cmap("jet"))
plt.ylabel("Latitude",fontsize=14)
plt.xlabel("Longitude",fontsize=14)prices = housing["median_house_value"]
tick_values = np.linspace(prices.min(),prices.max(),11)
cbar = plt.colorbar(ticks=tick_values/prices.max())
cbar.ax.set_yticklabels(["$%dk"%(round(v/1000)) for v in tick_values], fontsize = 14)
cbar.set_label('Median House Value', fontsize = 16)plt.legend(fontsize=16)
plt.show()

这样的话就更加清晰的印证了我们的想法,加州房价的西南部的确是整体偏高的,通过地图信息我们也能比较容易的假设出原因,可能就是因为加州的西南部是临海区域,所以整体的房价会偏高。

ok,本篇文章的分享内容就到这里啦,加州房价数据集作为机器学习使用的数据集的确数据质量非常棒,我们在使用的过程中没有花费太多的经历去进行清洗和改动。

本篇内容我主要和大家分享了如果使用Python和我们的数据库进行互联,以及如何将我们的数据保存至本地生成csv文件,后来我又下载了kaggle上面的数据集和大家简单分享了一下数据分析的简易步骤,虽然可能会非常的基础,但是大家如果能在看完我这篇文章之后收获一些东西的话,我会非常开心的!我的分享就到这里啦,非常谢谢大家的观看~我们其他文章见!

Python读取Mysql数据库数据保存至csv文件,以及简单使用Python进行数据分析。(加州房价数据集)相关推荐

  1. python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据

    文章目录: 1 数据说明 2 把数据集文件信息使用python pandas保存成csv文件 3 使用python pandas 读取csv的每行.每列数据 1 数据说明 1.在test_data目录 ...

  2. python连接mysql数据库数据

    使用python连接mysql数据库数据,有以下两种读取数据的方式推荐. 一种是通过游标,及fetch系列方法进行操作,另一种是通过pandas的read_sql()进行读取并操作.各种方法各有优劣, ...

  3. R将dataframe数据保存为csv文件

    R将dataframe数据保存为csv文件 目录 R将dataframe数据保存为csv文件 使用write.csv函数 使用reader包中的write_csv函数

  4. 使用python读取mysql数据库并进行数据的操作

    (一)环境的配置 使用python调用mysql数据库要引进一些库. 目前我使用的python版本是python3.6.引进库为pymysql 其他对应的库可以有以下选择: mysqldb,oursq ...

  5. python网站用什么数据库_使用python读取mysql数据库并进行数据的操作

    简介:(一)环境的配置使用python调用mysql数据库要引进一些库.目前我使用的python版本是python3.6.引进库为pymysql其他对应的库可以有以下选择: mysqldb,oursq ...

  6. python读取mysql数据库行数_使用python读取mysql数据库并进行数据的操作

    (一)环境的配置 使用python调用mysql数据库要引进一些库. 目前我使用的python版本是python3.6.引进库为pymysql 其他对应的库可以有以下选择: mysqldb,oursq ...

  7. python读取mysql数据库_Python操作MySQL数据库9个实用实例

    在Windows平台上安装mysql模块用于Python开发 用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1. ...

  8. python亿级mysql数据库导出_Python之csv文件从MySQL数据库导入导出的方法

    Python之csv文件从MySQL数据库导入导出的方法 发布时间:2020-10-26 07:39:02 来源:脚本之家 阅读:53 作者:张行之 Python从MySQL数据库中导出csv文件处理 ...

  9. Python读取SQLite数据库数据写入csv

    import sqlite3 import bd_gc_84 import csv import timestart =time.clock() print("正在运行........... ...

  10. 【Class 20】【实例】python 爬虫简单案例实现二---将数据保存为CSV文件

    摘抄一位网友的写入和读取csv的代码: #输出数据写入CSV文件 import csv data = [("Mike", "male", 24),(" ...

最新文章

  1. AngularJS:为什么ng-bind在角度上优于{{}}?
  2. alter table add column多个字段_WordPress 在文章列表快速编辑中编辑自定义字段
  3. vue怎么引入外部地址_vue系列教程之微商城项目|主页
  4. 微信公众号开发 [03] 结合UEditor实现图文消息群发功能
  5. linux cookie 地址,SYN Cookie原理及其在Linux内核中的实现
  6. 编译html成qch,在应用程序编译过程中运行qcollectiongenerator
  7. # Schedulerx正式登陆Ali-k8s应用目录
  8. 帝国CMS7.5仿《问答库》题库问答学习平台网站源码 带手机版
  9. android wear ios表盘,秒杀 Apple Watch,Android Wear 又有 17 款新表盘可以玩啦!
  10. JavaScript学习(三十四)—事件委托
  11. 华为root_传Mate40系列12月率先升级鸿蒙OS 华为官方回应:真相原来是这样
  12. cor软件免费下载_CDRX4软件免费版
  13. python手机号码替换代码_手机号码中间部分替换成星号
  14. 使用Fiddler快速保存微信视频号上的视频
  15. 推荐一款个人资料管理软件(免费,Wizknowledge)
  16. Linux服务器安全配置
  17. 一个 24 通道 100Msps 逻辑分析仪
  18. INS防封号技巧,这些注意事项如果你不知道容易被封号停用
  19. 【无标题】deployment does not have minimum availability
  20. Win10禁用Ctrl+空格切换输入法

热门文章

  1. dfuse 开放其 EOSIO 堆栈的源代码
  2. 帝国网站mysql 数据库开发_帝国cms phpmyadmin数据库操作及密码修改
  3. 配备透明触摸屏 看3D全息投影概念手机
  4. [置顶] 增强型的FLEA_Db_TableDataGateway,提供按字段名称操作的功能
  5. 贴片电阻阻值识别方法
  6. 基于Springboot和Idea的医院管理系统(挂号、缴费、取药、住院) 毕业论文+项目源码及数据库文件+包远程安装配置+代码讲解
  7. python---exception handing and testing
  8. c# u盘使用记录_C#检测是否有u盘插入的方法
  9. QQ会员首页HTML+CSS
  10. js当前日期倒推,向前倒推或往后推算