2019-03-15 21:40:45 qq_38183592 阅读数 112
  • Python数据分析实战-Pandas

    深度学习、机器学习和数据分析必须用pandas。pandas是在python直接流行的数据处理框架。可以说,如果不会使用pandas,就谈不上会用python做数据分析。本课程会使用奥林匹克一个真实的数据作为实验数据,从初级到各种pandas的常用操作,到常用的数据可视化,让你在短的时间内掌握好pandas,轻松愉快的玩转数据分析。

    2334 人正在学习 去看看 阿勒拉哈

Python操作三大数据库

在我们用Python语言开发软件时会经常用到三大数据库去存储数据:Mysql,MongoDB,Redis;
作为复习今天重新写一遍方便日后复习Python操作各大数据库的方法用法;

Python操作Mysql

DDL(数据库定义语句)

    create table/database
    alter   table/database
    drop   table/database

DML(数据管理语句)

insert 	新增
delete	删除
update	修改
select	查询

在python2中,连接Mysql的库大多是使用MySQLdb,但是此库官方并不支持Python3,所以我们用PyMySQL
直接 pip install pymysql 即可

import pymysql

db = pymysql.connect(host='localhost',port=3306,user='root',password='12345')   # 连接mysql,声明一个连接对象db
cursor = db.cursor()    # 获取操作游标
cursor.execute('select version()')# 查询数据库版本,返回的是查询到的数量
# version = cursor.execute('select version()')    # 使用游标执行sql语句
data = cursor.fetchone()    # 获得第一条数据,也就得到了版本号
print(data)

----------------------------------结果
('5.7.17-log',)

查询数据库:

cursor.execute('show databases')
databases = cursor.fetchall()	# fetchall()方法获取所有结果,元组的形式
print(databases)
----------------------------
(('information_schema',), ('dailyfresh',), ('hive',), ('ihome',), ('images360',), ('lagou',), ('movie',), ('mxonline',), ('mysql',), ('news',), ('performance_schema',), ('solar',), ('sougou_data_result',), ('spiders',), ('student',), ('sys',), ('testdjango',))

创建数据库:

cursor.execute('create database test_Mysql default character set utf8')# 创建数据库,使用默认utf8编码

创建表:
在创建完数据库test_Mysql后,我们想要使用该数据库只需要在链接时多制定一个db参数即可

import pymysql

db = pymysql.connect(host='localhost',port=3306,user='root',password='12345',db='test_Mysql')
cursor = db.cursor()    # 获取操作游标
# 创建表
sql = '''create table if not exists students (id varchar(15) not null, name varchar(255) not null, age INT not null, primary key(id))'''
cursor.execute(sql)
db.close()

插入数据

id = '20120203'
name = 'Li'
age = 18
sql = '''insert into students(id,name,age) values(%s,%s,%d)'''  # 格式化字符%s代替value值
try:
    cursor.execute(sql,(id,name,age))# 第一个参数传入sql语句,第二个参数传入value值,用元组的方式
    db.commit() # 提交事务
except:
    db.rollback() # 错误回滚
db.close()

事物的四个属性:

属性 解释
原子性 事务是一个不可分割的工作单位,事务中包括的注入操作要么都做,要么都不做
一致性 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。举例来说,假设用户A和用户B两者的钱加起来一共是1000,那么不管A和B之间如何转账、转几次账,事务结束后两个用户的钱相加起来应该还得是1000,这就是事务的一致性
隔离性 隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。关于事务的隔离性数据库提供了多种隔离级别
持久性 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
--------- ------------------------------

插入,更新,删除操作都是对数据库进行更改的操作,而更改操作偶必须为一个事务,所以这些操作的标准写法就是:

try:
	cursor.execute(sql)
	db.commit()
except:
	db.rollback()

插入数据还可以利用 dict 字典的形式
实现动态插入,这种方式对于***Python爬虫数据采集***很方便

data = {
	'id': '123456',
	'name':‘ligang’
	'age':20
} 
table = 'students'
keys = ','.join(data.keys())
values = ','.join(['%s']*len(data))
sql = 'insert into {table}({keys}) values ({values})'.format(table=table, keys=keys,values=values)
try:
	if cursor.execute(sql, tuple(data.values())):
		print('Successful')
		db.commit()
except:
		print('Filed')
db.close()

更新数据

sql = ‘update students set age = %s where name = %s’
cursor.execute(sql, (20,'Bob'))

查询

sql = 'select * from students where age>=20'
print('row count:', cursor.execute(sql))
cursor.fetchone()	# 获取一条
cursor.fetchall()	# 获取剩余全部 ,二重元组的形式,如果数据量大,内存开销便会增大

Python操作MongoDB

  1. 连接MongoDB
from pymongo import MongoClient
from datetime import datetime
# 方式1
# client = MongoClient()
# 方式2
# client2 = MongoClient('localhost',27017)# ip, 端口
# 方式三
# client3 = MongoClient('mongodb://localhost:27017')# 直接传入字符串mongodb开头
# print(client2.HOST)
# print(client.list_database_names())
# client.close() # 关闭依然可以用。自带线程池 当重新访问 数据库会自动连接
# print(client.list_database_names())
  1. 操作增删改查
**  ****** 将连接封装成为类,用面向对象的方式去调用方法 *****   **
class TetMongo(object):
    def __init__(self):
        self.client = MongoClient()  # 建立连接 默认本地
      #  self.db = self.client['test'] # 没有自动创建
        self.db = self.client.test   # 链接数据库 和上边一样
    def add_one(self):
        """新增数据"""
        student = {
            'id': '135136',
            'name': '老李',
            'age': '22',
            'gender': '男',
            'time': datetime.now() # 自动添加字段,这个时间可以用原生的python时间不需要加处理
        }
        return self.db.students.insert_one(student)
        # 除了插入一条之外 insert插入多条采用【{stu1},{stu2}】列表嵌套字典的方式
        # save() 也可以保存多条,但是要遍历列表 速度慢
    def get_one_from_id(self,stu_id):
        '''查询指定id的数据'''
        return self.db.students.find_one({'id':str(stu_id)}) # 查找一条 find_one
    def get_more_from_gender(self,gender):
        '''查询多个性别为男的数据'''
        return self.db.students.find({'gender':str(gender)})  # 查找多条 find

    def find_all(self):
        return self.db.students.find()  # 直接调用不传参数 默认查找该集合全部数据

    #    (>)  大于 - $gt
    #    (<)  小于 - $lt
    #    (>=)  大于等于 - $gte
    #    (<= )  小于等于 - $lte
    # 例:查询集合中age大于25的所有记录
    # for i in my_set.find({"age": {"$gt": 25}}):
    #     print(i)
    def update_from_id(self):
        rest = self.db.students.update_one({'name':'老王'},{'$set':{'gender':'女'}})
       # rest = self.db.students.update_many({},{'$set':{'gender':'女'}})
        print(rest)
    def remove(self):
        # return self.db.students.delete_one({'id':str(id)}) # 删除一条
        return self.db.students.remove() # 删除所有记录
        # return self.db.students.remove({'name':'老王'})
def main():
    obj = TetMongo()
    # result = obj.add_one()
    # print(result.inserted_id)

    # result = obj.get_one_from_id(123415)
    # print(result)
    #
    result_list = obj.get_more_from_gender('男')
    for res in result_list:
        print(res)

    # all_stu = obj.find_all()
    # for res in all_stu:
    #     print(res)
    # # obj.update_from_id()
    #
    res1=obj.remove()
    print(res1)
if __name__ == '__main__':
    main()

Python操作Redis

下一篇专门深入理解Redis

2017-09-07 11:55:04 iseeyounow2017 阅读数 11753
  • Python数据分析实战-Pandas

    深度学习、机器学习和数据分析必须用pandas。pandas是在python直接流行的数据处理框架。可以说,如果不会使用pandas,就谈不上会用python做数据分析。本课程会使用奥林匹克一个真实的数据作为实验数据,从初级到各种pandas的常用操作,到常用的数据可视化,让你在短的时间内掌握好pandas,轻松愉快的玩转数据分析。

    2334 人正在学习 去看看 阿勒拉哈

    Python爬取网站数据后,数据的保存方式是大家比较关心的意一件事情,也是为接下来是否能够更简便的处理数据的关键步骤。下面,就Python爬取网页数据后的保存格式进行简单介绍。三种保存格式为txt格式、CSV格式和数据库格式。

    首先,保存为txt格式。话不多说,直接上代码!    

# -*- coding: utf-8 -*-
import requests
import json
import html
import urllib
import sys
import re
import random
import time
from threading import Timer
from bs4 import BeautifulSoup


reload(sys)
sys.setdefaultencoding('utf-8')
headers ={'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36'}


def get_html1(i):
    url = 'https://www.ppmoney.com/StepUp/List/-1/{}/fixedterm/true/false?_={}'
    html = requests.get(url.format(i,random.randint(1501050773102,1501051774102)),headers=headers)
    return html.content
def get_data1(html):
    data1 = json.loads(html)
    data = data1['PackageList']['Data']
    for i in data:
        #产品名称,利率,金额
         print i['name'],'\t',i['profit'],'\t',i['investedMoney']
       with open('d:PPmonenyshengxinbao9.6.txt','a') as f:
           f.write(i['name']+'\t'+str(i['profit'])+'\t'+str(i['investedMoney'])+'\n'
for i in range(1,10):
    get_data1(get_html1(i))   

执行代码后,生成文件打开后显示如下:

    2.保存为CSV格式。

# -*- coding: utf-8 -*-
import requests
import pandas as pd
import numpy as np
import json
import html
import urllib
import sys
import re
import random
import time
from threading import Timer
from bs4 import BeautifulSoup


reload(sys)
sys.setdefaultencoding('utf8')
headers ={'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36'}

def get_html1(i):
    url = 'https://www.ppmoney.com/StepUp/List/-1/{}/fixedterm/true/false?_={}'
    html = requests.get(url.format(i,random.randint(1501050773102,1501051774102)),headers=headers)
    ceshi1=html.content
    data = json.loads(ceshi1)
    return(data['PackageList']['Data'])


data_ceshi=pd.DataFrame([])
html_list=[]
for i in range(100):
    html_list.append(get_html1(i))
for i,heml_avg in enumerate(html_list):
    tmp=pd.DataFrame(heml_avg)
    tmp["page_id"]=i
    data_ceshi=data_ceshi.append(tmp)


print data_ceshi
data_ceshi.to_csv('e:/data.csv',encoding='gbk')

保存后,结果如下:

3.保存到数据库。

# -*- coding: utf-8 -*-
import requests
import pandas as pd
import numpy as np
import json
import html
import urllib
import sys
import re
import random
import MySQLdb
import time
from threading import Timer
from bs4 import BeautifulSoup


reload(sys)
sys.setdefaultencoding('utf8')
headers ={'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36'}

db = MySQLdb.connect(host = 'localhost',port = 3306,user = 'zhouliye',passwd = '123456zz',db = 'abbc',charset='utf8')
print '连接上数据库了!'
cursor = db.cursor()


cursor.execute("DROP TABLE IF EXISTS shengxb")
sql = """CREAtE TABLE SHENGXB(
          beginTime DATETIME,
          endTime DATETIME,
          investedMoney float,
          name CHAR(50))"""


cursor.execute(sql)


def get_html1(i):
    url = 'https://www.ppmoney.com/StepUp/List/-1/{}/fixedterm/true/false?_={}'
    html = requests.get(url.format(i,random.randint(1501050773102,1501051774102)),headers=headers)
    ceshi1=html.content
    data = json.loads(ceshi1)
    return(data['PackageList']['Data'])


data_ceshi=pd.DataFrame([])#建立一个空数据框
html_list =[]#建立一个空列表


for i in range(10):
    html_list.append(get_html1(i))


for i in html_list:
    for j in i:
        a = j['beginTime']
        b = j['endTime']
        c = j['investedMoney']
        d = j['name']
        print u'开始时间: ' + str(a) + u'结束时间: '+ str(b) + u'投资金额: ' + str(c) + u'项目名称' + str(d)
        insert_SHENGXB = ("INSERT INTO SHENGXB (beginTime,endTime,investedMoney,name) VALUES(%s,%s,%s,%s)")
        data_data= (a, b, c, d)
        cursor.execute(insert_SHENGXB,data_data)
        db.commit()
        print '******完成此条插入!'




print '爬取数据并插入mysql数据库完成...'

保存后显示如下:

2014-04-16 09:28:04 oMuYeJingFeng1 阅读数 8510
  • Python数据分析实战-Pandas

    深度学习、机器学习和数据分析必须用pandas。pandas是在python直接流行的数据处理框架。可以说,如果不会使用pandas,就谈不上会用python做数据分析。本课程会使用奥林匹克一个真实的数据作为实验数据,从初级到各种pandas的常用操作,到常用的数据可视化,让你在短的时间内掌握好pandas,轻松愉快的玩转数据分析。

    2334 人正在学习 去看看 阿勒拉哈

最近大数据竞赛很火,本人python没学多久,想试着写一下,只是实现了数据的处理,主要用到了dict,list,file知识

还有一点要说,我也用matlab实现了,但是运行完要差不多两分钟,但是python秒处理,有木有啊,足见python处理文本功能之强大


文件里的数据格式:

clientid      shopingid      num    date

1111000   3873             2          4月5日

clientinfo = []
shopinginfo = {}
month={}
day={}
shopidflag = 0
clientstartflag = 0
total={}
tmpclientid=''
output= open('f:/a.txt','a')
with open('f:/s.txt','r') as data_file:
    for lineinfo in data_file:
        lineinfo = lineinfo.split()
        clientid = lineinfo[0]
        shopingid = lineinfo[1]
        num=[]
        num.append(lineinfo[2])
        data = lineinfo[3]
        data = data[:-1]
        data = data.split('月')
        monthvar=[]
        monthvar.append(data[0])
        dayvar=[]
        dayvar.append(data[1])
        
        if clientid in clientinfo and shopingid in shopinginfo and int(data[0])>=6:
            shopinginfo[shopingid].append(lineinfo[2])
            month[shopingid].append(data[0])
            day[shopingid].append(data[1])
        elif clientid in clientinfo and shopingid not in shopinginfo and int(data[0])>=6:
            shopinginfo[shopingid]=num
            month[shopingid]= monthvar
            day[shopingid] = dayvar
        elif clientid not in clientinfo :
            #if clientstartflag  == 1: 
            clientflag = 0
            shopinglink=''
            for (k, v) in shopinginfo.items():
                total={}
                vote=0
                for  i  in v:
                    if  i  in total:
                        total[i]+=1
                    else:
                        total[i]=1      
                for var in total:
                    if var == '0':
                        vote += total[var]
                    elif var == '1':
                        vote = 0
                        break 
                    elif var == '2':
                        vote += total[var]*2
                    else:
                        vote += total[var]*3
                    if vote >= 3:
                        if clientflag == 0:
                            output.write(tmpclientid+'\t')
                            clientflag =1
                        shopinglink+=k+','
            if clientflag == 1:
                output.write(shopinglink.strip(',')+'\r\n')
            shopinginfo={}
            month ={}
            day ={}
            clientinfo=[]
            tmpclientid=clientid
            clientinfo.append(clientid)
            shopinginfo[shopingid]=num
            month[shopingid] = monthvar
            day[shopingid] = dayvar
    shopinglink=''
    for (k, v) in shopinginfo.items():
        for  i  in v:
            if  i  in total:
                total[i]+=1
            else:
                total[i]=1
        total={}
        vote=0
        for  i  in v:
            if  i  in total:
                total[i]+=1
            else:
                total[i]=1      
        for var in total:
            if var == '0':
                vote += total[var]
            elif var == '1':
                vote = 0
                break 
            elif var == '2':
                vote += total[var]*2
            else:
                vote += total[var]*3
        if vote >= 3:
            if clientflag == 0:
                clientflag =1
            shopinglink+=k+','
    if clientflag == 1:
        output.write(tmpclientid+'\t')
        output.write(shopinglink.strip(','))
    data_file.close()
    output.close()


2019-12-10 16:05:09 y1132546 阅读数 29
  • Python数据分析实战-Pandas

    深度学习、机器学习和数据分析必须用pandas。pandas是在python直接流行的数据处理框架。可以说,如果不会使用pandas,就谈不上会用python做数据分析。本课程会使用奥林匹克一个真实的数据作为实验数据,从初级到各种pandas的常用操作,到常用的数据可视化,让你在短的时间内掌握好pandas,轻松愉快的玩转数据分析。

    2334 人正在学习 去看看 阿勒拉哈

python 图片分别保存至文件夹(深度学习图片数据集处理)

将一个文件夹下的图片进行分类分别保存到两个文件夹中

作为刚接触深度学习的小白,在看了两三个例子之后,开始了自己艰难的探索之路。在网上下载了猫狗识别的数据集,发现猫狗的图片都在一个文件夹里,现在想把猫和狗的图片分别变成两个文件。
参考了博客 https://blog.csdn.net/qq_43569111/article/details/100010904 并做了一些修改

import os
import cv2

def read_directory(directory_root,objective1_name,objective2_name,class_name):
    for img_name in os.listdir(directory_root):
        # print(img_name)
        img = cv2.imread(directory_root+"/"+img_name)     
        if class_name in img_name.split('/')[-1] :            
            cv2.imwrite(objective1_name+"/"+img_name,img)
        else:
            cv2.imwrite(objective2_name + "/" + img_name, img)

path = 'F:\dataset\dog_vs_cat/train_o'             #原文件路径
savepath_1 = 'F:\dataset\dog_vs_cat/train\Dogs'          #新文件夹狗的路径
savepath_2= 'F:\dataset\dog_vs_cat/train\Cats'           #新文件夹猫的路径
class_name = 'dog'                                          #其中一类的名字
read_directory(path,savepath_1,savepath_2,class_name)       
2018-07-22 19:43:44 weixin_39778570 阅读数 16554
  • Python数据分析实战-Pandas

    深度学习、机器学习和数据分析必须用pandas。pandas是在python直接流行的数据处理框架。可以说,如果不会使用pandas,就谈不上会用python做数据分析。本课程会使用奥林匹克一个真实的数据作为实验数据,从初级到各种pandas的常用操作,到常用的数据可视化,让你在短的时间内掌握好pandas,轻松愉快的玩转数据分析。

    2334 人正在学习 去看看 阿勒拉哈

所有资料汇总学习:点这里

利用python进行数据分析

Numpy

Numpy简单使用(入门)

Pandas入门

Pandas入门系列(一)-- Series
Pandas入门系列(二)-- DataFrame
Pandas入门系列(三)-- 深入理解Series和DataFrame
Pandas入门系列(四) – Pandas io操作
Pandas入门系列(五) – Indexing和Selecting
Pandas入门系列(六) – reindex
Pandas入门系列(七) – NaN
Pandas入门系列(八) – 多级index
Pandas入门系列(九) – Map和replace

pandas进阶

Pandas玩转数据(一) – 简单计算
Pandas玩转数据(二) – Series和DataFrame排序
Pandas玩转数据(三) – DataFrame重命名
Pandas玩转数据(四) – DataFrame的merge
Pandas玩转数据(五) – Concatenate和Combine
Pandas玩转数据(六) – 通过apply对数据进行处理
Pandas玩转数据(七) – Series和DataFrame去重
Pandas玩转数据(八) – 时间序列简单操作
Pandas玩转数据(九) – 时间序列的采样和画图
Pandas玩转数据(十) – 数据分箱技术Binning
Pandas玩转数据(十一) – 数据分组技术Groupby
Pandas玩转数据(十二) – 数据聚合技术Aggregation
Pandas玩转数据(十三) – 透视表
Pandas玩转数据(十四) – 分组和透视功能实战

Matplotlib入门

Matplotlib简单画图(一) – plot
Matplotlib简单画图(二) – subplot
Matplotlib简单画图(三) – pandas绘图之Series
Matplotlib简单画图(四) – pandas绘图之DataFrame
Matplotlib简单画图(五) – 直方图和密度图

Matplotlib扩展之Seaborn

Seaborn简单画图(一) – 散点图
Seaborn简单画图(二) – 直方图和密度图
Seaborn简单画图(三) – 柱状图和热力图
Seaborn简单画图(四) – 设置图形显示效果
Seaborn简单画图(五) – Seaborn调色功能

获取数据的一个库Tushare

Tushare获取数据

简单实战

股票市场分析实战

python 读取摄像头数据并保存

博文 来自: u012526003

python数据库,python操作sqlite数据库

博文 来自: javajiawei
没有更多推荐了,返回首页