20011 基于python的去哪儿网旅游数据分析

运行视频、代码等:

链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg

提取码:1589

复制这段内容后打开百度网盘手机App,操作更方便哦

技术

Python + Pandas + Numpy + Pyecharts

功能详情

数据抽取

数据清洗

数据分析

数据展示

主要展示了不同时间不同城市的景区的销售情况。

系统相关截图

景点门票销售额排行

import random

with open('hw.txt', 'w') as f:

f.write('height\tweight\n')

for i in range(100):

height = random.randint(1600, 1900) / 10

weight = (height - 100) * 0.9 + random.randint(-50, 50) / 10

f.write('%.1f\t%.1f\n' % (height, weight))

linear_regression.py:

author = 'DivinerShi'

import numpy as np

import matplotlib.pyplot as plt

def compute_error(b,m,data):

totalError = 0

#Two ways to implement this

#first way

# for i in range(0,len(data)):

# x = data[i,0]

# y = data[i,1]

# totalError += (y-(m*x+b))**2

# print('(%f*%f+%f)=%f,y=%f,loss=%f,totalError=%f' % (m,x,b,(m*x+b),y,(y-(m*x+b))**2,totalError))

#second way

x = data[:,0]

y = data[:,1]

totalError = (y-m*x-b)**2

totalError = np.sum(totalError,axis=0)

return totalError/float(len(data))

def optimizer(data,starting_b,starting_m,learning_rate,num_iter):

b = starting_b

m = starting_m

#gradient descent

for i in range(num_iter):

#update b and m with the new more accurate b and m by performing

# thie gradient step

b,m =compute_gradient(b,m,data,learning_rate)

if i%100==0:

print('iter {0}:error={1}'.format(i,compute_error(b,m,data)))

return [b,m]

def compute_gradient(b_current,m_current,data ,learning_rate):

b_gradient = 0

m_gradient = 0

N = float(len(data))

#Two ways to implement this

#first way

# for i in range(0,len(data)):

# x = data[i,0]

# y = data[i,1]

# #computing partial derivations of our error function

# #b_gradient = -(2/N)*sum((y-(m*x+b))^2)

# #m_gradient = -(2/N)*sum(x*(y-(m*x+b))^2)

# b_gradient += -(2/N)*(y-((m_current*x)+b_current))

# m_gradient += -(2/N) * x * (y-((m_current*x)+b_current))

# # print('m_current=%f,b_current=%f,N=%f,x=%f,y=%f,y-((m_current*x)+b_current)=%f, b_gradient=%f, m_gradient=%f' % (m_current, b_current, N, x, y, y-((m_current*x)+b_current), b_gradient, m_gradient))

#Vectorization implementation

x = data[:,0]

y = data[:,1]

b_gradient = -(2/N)*(y-m_current*x-b_current)

b_gradient = np.sum(b_gradient,axis=0)

m_gradient = -(2/N)*x*(y-m_current*x-b_current)

m_gradient = np.sum(m_gradient,axis=0)

#update our b and m values using out partial derivations

new_b = b_current - (learning_rate * b_gradient)

new_m = m_current - (learning_rate * m_gradient)

return [new_b,new_m]

def Linear_regression():

# get train data

# data =np.loadtxt('data.csv',delimiter=',')

data =np.loadtxt('hw.txt',delimiter='\t',skiprows=True)

#define hyperparamters

#learning_rate is used for update gradient

#defint the number that will iteration

# define y =mx+b

learning_rate = 0.000001

initial_b =0.0

initial_m = 0.0

num_iter = 10000

#train model

#print b m error

print('initial variables:\n initial_b = {0}\n intial_m = {1}\n error of begin = {2} \n'\

.format(initial_b,initial_m,compute_error(initial_b,initial_m,data)))

#optimizing b and m

[b ,m] = optimizer(data,initial_b,initial_m,learning_rate,num_iter)

#print final b m error

print('final formula parmaters:\n b = {1}\n m={2}\n error of end = {3} \n'.format(num_iter,b,m,compute_error(b,m,data)))

#plottting

x = data[:,0]

y = data[:,1]

y_predict = m*x+b

plt.scatter(x, y, color = 'blue')

plt.plot(x,y_predict,'k-', color = 'red', linewidth = 4)

# plt.show()

from sklearn import linear_model

regr = linear_model.LinearRegression()

regr.fit(x.reshape(-1,1), y)

print(regr.coef_, regr.intercept_)

plt.scatter(x, y, color = 'blue')

plt.plot(x, regr.predict(x.reshape(-1,1)), color = 'orange', linewidth = 4)

plt.show()

def lr_by_sklearn():

from sklearn import linear_model

data =np.loadtxt('hw.txt',delimiter='\t',skiprows=True)

x = data[:,0]

y = data[:,1]

regr = linear_model.LinearRegression()

regr.fit(x.reshape(-1,1), y)

print(regr.coef_, regr.intercept_)

# import pandas as pd

# data = pd.read_csv('hw.txt', sep='\t')

# regr.fit(data['height'].values.reshape(-1,1), data['weight'])

# plt.scatter(data['height'], data['weight'], color = 'blue')

# plt.plot(data['height'], regr.predict(data['height'].values.reshape(-1,1)), color = 'orange', linewidth = 4)

# plt.show()

plt.scatter(x, y, color = 'blue')

plt.plot(x, regr.predict(x.reshape(-1,1)), color = 'orange', linewidth = 4)

plt.show()

if name =='main':

Linear_regression()

lr_by_sklearn()

import numpy as np

df2 = df.groupby('addr').agg([np.mean, np.var])

df2['x'] = 1

from math import pi, exp, sqrt

def f(x, mean, var):

return exp(-(x-mean)**2/(2var))/sqrt(2pi*var)

df2['p_x_min']=df2[['min','x']].apply(lambda x: f(x['x'], x['min']['mean'], x['min']['var']), axis=1)

df2['p_x_max']=df2[['max','x']].apply(lambda x: f(x['x'], x['max']['mean'], x['max']['var']), axis=1)

(df2['p_x_min']pcpa['java']).argmax()

方法二:

from numpy import genfromtxt

x = genfromtxt('51.txt', delimiter='\t', skip_header=True, usecols=(2,3))

x.shape

y = genfromtxt('51.txt', delimiter='\t', skip_header=True, usecols=(1), dtype=str)

y.shape

import numpy as np

np.unique(y)

from sklearn.naive_bayes import GaussianNB

clf = GaussianNB()

拟合数据

clf.fit(x, y)

print(clf.predict([[0.8, 1.2]]))

print(clf.predict_proba([[0.8, 1.2]]))

print(clf.predict_log_proba([[0.8, 1.2]]))

import urllib.request

import re

import sqlite3

def get_content(page, key):

url = 'https://search.51job.com/list/010000%2C020000%2C030200%2C040000,000000,0000,00,9,99,' + key + ',2,' + str(page) + '.html'

a = urllib.request.urlopen(url)

html = a.read().decode('gbk')

lst = re.findall(r'(北京|上海|广州|深圳).*?\s+(\d+.?\d?)-(\d+.?\d?)(万|千)/(年|月)', html)

return lst

conn = sqlite3.connect('51.db')

c = conn.cursor()

c.execute('''CREATE TABLE IF NOT EXISTS jobs

(key text, addr text, min float, max float)''')

c.execute('''delete from jobs''')

conn.commit()

with open('51.txt', 'w') as f:

f.write('%s\t%s\t%s\t%s\n' % ('key','addr','min','max'))

for key in ('python', 'java'):

for each in range(1, 11):

for items in get_content(each, key):

min = float(items[1])

max = float(items[2])

if items[3] == "千":

min /= 10

max /= 10

if items[4] == "年":

min /= 12

max /= 12

f.write('%s\t%s\t%s\t%s\n' % (key, items[0], round(min, 2), round(max, 2)))

c.execute("INSERT INTO jobs VALUES (?,?,?,?)", (key, items[0], round(min, 2), round(max, 2)))

conn.commit()

conn.close()

if name == 'main':

lst = get_content(1, 'python')

print(lst)

基于python的旅游系统_基于python的去哪儿网旅游数据分析相关推荐

  1. python课表查询系统_使用python抓取广西科技大学教务系统课程表

    因学校教务系统课程表查询功能累赘,服务器经常挂,同时也不适合手机端查询,所以用python开发爬虫抓取所有课程表,放到我的服务器上面. 本文仅供学习. 特性 中途退出程序再次运行不会抓取到重复课程表 ...

  2. python开发bs系统_基于BS架构的招聘管理系统的开发

    基于 B/S 架构的招聘管理系统的开发 近年来 , 伴随着中国在全球经济的地位日益强大 , 中国国内企业处于迅速发 展阶段.企业的发展离不开人才的引进和更新 , 而这也相继带来了人力资源管理 的巨大发 ...

  3. python地铁查询系统_基于图结构实现地铁乘坐线路查询

    基于图结构实现地铁乘坐线路查询 github-python算法和flaskapp部分:repo github-android部分:repo flaskapp接口文档:传送门 深度了解Dijkstra优 ...

  4. python 请假审批系统_基于工作流的请假审批系统设计与实现

    标[ ].系统结合单位的实际工作情况,应用工作流技术来实现无纸化请假,提供效率, 降低成本.文章以学生请假审批系统的详细设计与实现为背景,介绍了工作流技术的实现方 法. 1 系统需求分析 本系统主要是 ...

  5. python条形码识别系统_基于Python与Zbar的无人机盘点条形码识别研究

    2018 年 第 6 期 第 4 0 卷 总 第 2 8 8 期 物流工程与管理 LOGISTICS ENGINEERING AND MANAGEMENT 物流技术 doi :10.3969/ j . ...

  6. 基于python的报修系统_基于JSP的学生公寓报修管理系统.doc

    常州信息职业技术学院 毕业设计(论文)报告 学生毕业设计(论文)报告 系 别: 软件学院 专 业: 软件技术 设计(论文)题目: 基于JSP的学生公寓报修管理系统 指 导 教 师: 设 计 地 点: ...

  7. python学生名片系统_基于python的学生信息管理系统!听说好多人的作业都是这个...

    完整代码 import pymysqlindex=''' +---------------------+ 首页 欢迎来到学生信息管理系统 1.登陆 2.注册 3.quit(按任意键退出) +----- ...

  8. python地铁查询系统_基于Python的苏州实时公交/地铁接口调用代码实例

    1.[代码][Python]代码 #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import ur ...

  9. python在线考试系统_基于Django的在线考试系统

    项目目录结构: account为扩展的Django用户模块 analysis为用户答题分析模块 api为接口路由 business为机构配置信息模块 competition为比赛核心模块 config ...

最新文章

  1. GPU版TensorFlow怎么指定让CPU运行
  2. python redis 订阅发布_Python-Redis的发布与订阅
  3. class不生效 weblogic_weblogic下更改jsp不生效的解决办法
  4. 5月23日任务 LAMP架构介绍、MySQL、MariaDB介绍、 MySQL安装
  5. springboot数据访问基本操作步骤
  6. “\”C++中的换行符
  7. python 时间日期处理
  8. RotateDrawable
  9. 关于Promise详解
  10. java可选项_在Java中链接可选项8
  11. Cogs 2221. [SDOI2016 Round1] 数字配对(二分图)
  12. waitpid最后以一个参数设为0_变频器用远传压力表控制恒压供水参数设置
  13. PS CS6教程(photoshop视频教程) 免费下载
  14. http禁用缓存、文件下载
  15. Introduction to Wireless LAN Measurements From 802.11a to 802. 11 ac
  16. 009-lissajous(一)
  17. ceph---ceph osd DNE状态对集群的影响
  18. 自动化测试框架RobotFrameWork教程03 RF基础关键字
  19. 解决MySQL5和8的成绩排序问题
  20. 翻斗式雨量计的组成与工作原理

热门文章

  1. 重装系统无法安装在efi分区_提示“在EFI系统上windows只能安装到GPT磁盘”解决方法...
  2. Linux mkdir命令
  3. kb2919442不适用计算机,Windows运维之Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机...
  4. LinuxC编程——文件IO
  5. Unity吃豆人敌人BFS广度(宽度)优先算法实现怪物追踪玩家寻路
  6. 记一次安装centOS7.X遇到的i8042 i8042 no controller found和安装源感叹号
  7. android通用模板项目AndroidTemplate
  8. CSV格式的文件与EXCEL文件的区别
  9. dllimport和dllexport作用与区别
  10. asp前端日历_asp日历代码