连接数据库

准备工作

楼主这里用的一个轻量级关系型数据库,MySQL (这里楼主安装MySQL的时候遇到了一个小问题,没有兼容服务器,根据这个帖子可以解决这个问题  分享 | 安装 mysql 报错 no compatible servers),操作界面使用的 HeidiSQL。

这里需要注意,我们这次连接数据库时需要安装 PyMySQL 的包进行连接,在下载之前可以先观看下 官方文档 中的介绍和使用方法,这里文档就说明兼容版本。

这里楼主用的是 iris 的数据集,记录了 150 朵花的数据。

链接: https://pan.baidu.com/s/1fVaNHMhygMvfTYGQLXqkrQ 密码: wqh9

利用 heidiSQL 工具,把 csv 文件数据导入数据库

数据集中数据依次代表

Python 连接数据库

安装 PyMySQL

pip install PyMySQL
#推荐使用conda 来安装
conda install PyMySQL

打开 Jupyter notebook 编写 Python 代码 :

import pymysql.cursors
# 连接数据库
# host:要连接的数据库的IP地址
# user:登录的账户名,如果登录的是最高权限账户则为root
# password:对应的密码
# db:要连接的数据库,如需要访问上节课存储的IRIS数据库,则输入'IRIS'
# charset:设置编码格式,如utf8mb4就是一个编码格式
# cursorclass:返回到Python的结果,以什么方式存储,如Dict.Cursor是以字典的方式存储
connection =  pymysql.connect(host = '127.0.0.1', user = 'root',password = 'root',db = 'basic_information',cursorclass = pymysql.cursors.DictCursor)try :# 从数据库链接中得到cursor的数据结构with connection.cursor() as cursor :# 查询sql语句sql= " SELECT * FROM `iris_basic` WHERE `id`= %s"# 查询条件cursor.execute(sql,('256',))# 返回一条数据result=cursor.fetchone()# 返回多条数据# result=cursor.fetchall()print(result)print(result['id'])
finally :# 记得关闭连接connection.close()# 在之前建立的user表格基础上,插入新数据,这里使用了一个预编译的小技巧,避免每次都要重复写sql的句
# sql="INSERT INTO `USERS`(`email`,`password`) VALUES (%s,%s)"
# cursor.execute(sql,('webmaster@python.org','very_secret'))
# 执行到这一行指令时才是真正改变了数据库,之前只是缓存在内存中
# connection.commit()

COMMIT: 
1.注意过于频繁的commit会降低数据插入的效率,可以在多行insert之后一次性commit;2.autocommit选项:默认每一个insert操作都会触发commit操作方式,是在pymysql.connect的db参数后面,加一个autocommit=True参数

简单介绍两种不同的数据库

SQLite SQLite官方文档

  • 文件型数据库
  • 常用于应用程序存取数据
  • GUI : DB Browser for SQLite
  • Python :import sqlite3 ( Python 自带 )

相关准备 
1.访问DB Browser for SQLite,在界面右端选择合适的安装程序 
2.访问Kaggle-iris,下载整理好的iris的SQLite的数据集 
3.在DB Browser中打开iris sqllite格式的数据库

Mongo DB

  • NoSQL数据库
  • Json格式
  • GUI:Robo 3T
  • Python: import PyMongo

随着数据存储需求的发展,非关系型数据库NoSQL拥有了越来越多的使用者,NoSQL并不是No-SQL,而是指Not Only SQL。

非关系型数据库的特点

  • 没有固定的表结构
  • 避免使用join操作
  • NoSQL是基于键值对的,不需要经过SQL层的解析,性能较高

请阅读从关系型数据库到非关系型数据库,了解关系型数据库的瓶颈,以及非关系型数据库的发展历程

请阅读现在市场上的主流NoSQL数据库,扩展你对于数据库的了解

  • 10个出色的NoSQL数据库
  • 8 种 NoSQL 数据库系统对比

数据清理

  • 格式转换
  • 缺失数据
  • 异常数据
  • 数据标准化

格式转换

数据的原始储存形式未必适合Python数据处理

例:原始数据中在时间的一列储存了字符串,如20090609231247,代表2009年6月9日23点12分47秒。在代码需要将字符串转换为相应的Python中用于表示时间的数据结构,就能够直接实现减运算。

缺失数据

每条记录都可能在某些属性上缺失

例:在社交网络上爬取用户信息,有些用户并没有公开诸如他的性别或者年龄等信息,那我们收集过来的这些数据就是缺失的。

怎样应对缺失数据?

  • 忽略有缺失数据的记录
  • 直接把这个值标记为“未知”进行后续分析
  • 利用平均值,最常出现的值等去填充
  • (当然还有很多复杂的方法)

异常数据

出现不符合常识的数值列如

性别出现数值

住址GPS位于海上

处理方式可类比却还是数据

数据标准化

用户可自主输入的一些属性,可能出现实际是相同值,但输入不同,比如出生国家都是美国,可能US、USA、United States等各种写法。住址城市,一个城市可能有多个GPS地址对应,可根据城市范围统一。

数据清理实践:Airbnb

Pandas:它作为一种数据结构,它比较方便的读取一个数据库或者是一个CSB之类的数据文件的数据,然后形成它自带的一些数据结构,他核心的结构名字叫DataFrome。

Seaborn:主要是提供一些可视化功能

下载准备使用的数据集 Airbnb Dataset

Tips:养成处理数据集前,先看数据描述的习惯,会为你省下不少时间

# 并安装 Pandas & Seaborn 库
conda install Pandas
conda install seaborn
# 读取数据
import pandas
userse = pandas.read_csv('D:\countries_of_the_world.csv')#首先需要进行的是对数据的基本查看
#第一行是属性的名称,index从0开始,NaN代表missing value
# 取数据前几条
userse.head()
# 取数据前3条
userse.head(3)
# 取数据尾部条
userse.tail()
# 解释成数字的属性
userse.describe()
# 可以告诉我们整个数据长得样子
userse.shape
# 从第 1 条数据到第 3 条数据的GDP
userse.loc[1:3,'GDP ($ per capita)']
# 取一个值的全部数据
userse['GDP ($ per capita)']
# 格式转换:转变为日期格式,可以实现时间的加减
# userse["date_account_created"] = pandas.to_datetime(users["date_account_created"])
# userse.loc[0,"date_account_created"]-users.loc[1,"date_account_created"]
#定义到时分秒的关系,设置format函数参数,针对一些非常规的数据
# userse["timestamp_first_active"] = pandas.to_datetime(users["timestamp_first_active"],format="%Y%m%d%H%M%S")
#缺失数据处理:查看去掉缺失值的数据
userse["GDP ($ per capita)"].dropna()#画图,可以很直观的观察数据的异常值
import seaborn
%matplotlip inline
seaborn.distplot(userse["GDP ($ per capita)"].dropna())
seaborn.boxplot(userse["GDP ($ per capita)"].dropna())#异常数据处理:筛选age<90以及>10
users_with_true_age=users[users["age"]<90]
users_with_true_age=users_with_true_age[users_with_true_age["age"]>10]

补充知识

Pandas & Seaborn 库的补充

Pandas

Pandas逐渐成为了一个非常大的库,在数据处理问题方面表现优秀,是一个不可或缺的工具,Pandas中包含两个主要的数据结构:Series & DataFrame

请阅读:官方文档,官方文档永远是最好的学习材料,重点阅读:

  • 10 Minutes to pandas,建议跟着学习手册操作一遍。重点阅读Pandas的不同数据结构 、 head,describe,index等函数来查看DataFrame 、 Merge DataFrame(Concat & Join & Append) 、Grouping 、 Reshaping,如果学有余力的话建议自学一下Time Series 的内容
  • Working with Missing Data
  • Computational tools中Statistical Functions 部分,掌握基本的统计功能的实现
  • IO Tools (Text, CSV, HDF5, …),重点掌握如何读取CSV,JSON,以及如何应用参数实现数据的读取
  • 请阅读VisualizationMatplotlib库是如何实现可视化,学会不同类型图对应的函数

最后可以通过查询Pandas速查手册中文版,在有需要的时候,迅速解决疑问

Seaborn

Seaborn是基于matplotlib的绘图库,可以制作更多更美观的图形,如Example gallery中也可以看到很多关于图像的示例。这个绘图库可以很好地辅助我们对数据进行第一步的观察

请阅读:Seaborn tutorial,阅读Style management & Plotting functions & Structured grids 这三块内容,重点掌握画图的函数,以实现画出不同类型的图像

数据预处理

请阅读:

  • 数据挖掘中的数据预处理,本链接详细提供了关于数据清洗(值缺失、噪声) & 数据融合(实体识别,冗余和相关性分析)的方法,值得仔细阅读
  • 数据预处理,了解更多关于数据预处理的方法,和背后的数学原理

Python学习四: 连接数据库 与 数据清理相关推荐

  1. python学习四(处理数据)

    python学习四(处理数据) head first python中的一个数据处理的例子 有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间.以下是四位选手的9次成绩 James 2-3 ...

  2. Python数据分析入门笔记6——数据清理案例练习

    系列文章目录 Python数据分析入门笔记1--学习前的准备 Python数据分析入门笔记2--pandas数据读取 Python数据分析入门笔记3--数据预处理之缺失值 Python数据分析入门笔记 ...

  3. python 数据去重_科学网—python学习——根据条件提取数据,并去重 - 李立的博文...

    [Python字符串提取] 摘要:根据要求进行字符串的提取,并去重 导入分析所需的库import pandas as pd 构造数据集 as1 = pd.DataFrame({'a':[1,2,3,4 ...

  4. (零基础)入门python学习四步骤,附上Python全栈学习路线大刚!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Pyt ...

  5. SQL学习之-2.9 数据清理相关知识

    这部分主要讲解关于数据清理方面的知识,涉及到如下函数的详细讲解: LEFT .RIGHT.LENGTH 函数 POSITION.STRPOS.SUBSTR函数 CONCAT函数 CAST函数 COAL ...

  6. Head First Python学习笔记4——处理数据

    有这么几组数据需要你处理: James 2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22 Julia 2.59,2.11,2:11,2:23,3-10,2-23 ...

  7. python学习四十四天(前端之HTML标签)

    今日主要内容: web标准 浏览器内核 HTML介绍,规范,结构详解 字体标签 排版标签 超链接 图片标签 列表标签 <ul>.<ol>.<dl> 表格标签 < ...

  8. Python学习(四)后端开发框架django

    常见python web开发框架: web.py Django Pylons Tornado Bottle django菜鸟教程 一.django项目创建与启动 1.安装django pip inst ...

  9. 【Python学习】——读取HDF数据

    Hierarchical Data Format (HDF)--分层数据格式,通常包含多维数据,许多水文气象相关的数 据格式都是HDF.本文旨在利用python语言实现数据的快速读取,数据来自GLAS ...

最新文章

  1. 「无糖快乐水」就安全了?不不,心血管疾病的风险照样增加
  2. 9适应之力加多少攻击_NBA球星生涯最低分都是多少?詹皇碰上麦迪仅得3分,哈登最低1分...
  3. JNI线程、Linux常用命令、权限、防火墙配置
  4. [scala-spark]5. 伴生类和伴生对象
  5. 【数据结构与算法】之深入解析“正则表达式匹配”的求解思路与算法示例
  6. 织梦高端大气响应式会员中心模板 自适应手机端
  7. 经验 | 计算机视觉顶会上的灌水文都有哪些特征?
  8. 使用pdb调试python脚本
  9. cacheable 表达式_Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
  10. JSON Editor for Mac(JSON编辑器)
  11. Docker在centos下安装以及常见错误解决
  12. 《调色师手册:电影和视频调色专业技法(第2版)》——监视器校准
  13. anaconda安装完怎么打开_录像机怎么样安装在机柜上,看完就明白
  14. 【原创】新韭菜日记20---在国内股市亏钱的最大原因就是杠杆和割肉
  15. 桌面计算机右键管理没反应,右键计算机(我的电脑)管理选项打不开解决措施
  16. 吴晓波罗振宇2019跨年演讲感想
  17. GeoGebra2笔记:二维或三维画图
  18. 测量学matlab使用心得,测量学实习心得体会4篇
  19. 2021-基于深度学习的人脸检测综述文献-摘要
  20. 软件开发的43款可视化工具

热门文章

  1. Win10下使用WampServer搭建PHP开发环境
  2. Linux服务篇-NFS-网络文件系统
  3. (转)2018年国外主要实验室和科研团队成果和动向
  4. 如何使用ffmpeg将flv转换为mp4?
  5. C++ RasDial之调用RasEnumEntries遍历系统中存在的宽带连接名称
  6. RETAIN语句和FIRST.VARIABLE和LAST.VARIABLE连用
  7. js知道年月日怎么获取到是周几,和几月几号
  8. 上海亚商投顾:科创50指数录得6连阳 芯片股掀涨停潮
  9. Linux下将swf文件用浏览器读取打开(html、html5嵌入swf格式文件)
  10. GT20L16S1Y GT30L32S4W 横置竖排 转换为 横置横排