当前位置: 首页> 教育> 幼教 > 网站优化推广_网店装修是什么意思_营销策略理论_外贸建站

网站优化推广_网店装修是什么意思_营销策略理论_外贸建站

时间:2025/7/10 8:29:09来源:https://blog.csdn.net/m0_62428181/article/details/144795661 浏览次数:0次
网站优化推广_网店装修是什么意思_营销策略理论_外贸建站

1.项目整体架构

2.数据Schema

特价机票数据Schema

 {

"航班号":"FM9125",

"出发城市":"上海",

"起飞时间":"11:20",

"到达城市":"日照",

"到达时间":"13:00",

"日期":"2024-12-26",

"特价(元)":"200"

}

3.数据采集 

1.导入基本库
import csv
import time
from time import sleep
from selenium import webdriver
import undetected_chromedriver as uc
from bs4 import BeautifulSoup
2.实例化浏览器对象并发起请求
driver=uc.Chrome()
#发起请求
driver.get("https://www.ceair.com/activity/on-sale-new?eyJjb2RlIjoiSkhZWDE4In0=encoded")
sleep(6)

        上述url可能需要变动,需注意!

3.获取网页源代码并解析
data=driver.page_source
#解析html数据
bs = BeautifulSoup(data, 'html.parser')
4.提取数据并存储
#创建csv文件
with open('东航特价机票.csv', 'w', newline='') as csvfile:writer = csv.writer(csvfile)writer.writerow(['航班号','出发城市','起飞时间','到达城市','到达时间','日期','特价(元)'])
all=bs.find_all("div",{"class":"shopping-set-list"})[:-3]   #最后三个不含有效数据,需删除
for i in all:flightNumber=i.find("span",{"class":"title-flight-no"}).text.strip()depCityName=i.find("span",{"class":"title-depart-time"}).text.strip()depCityTime=i.find("span",{"class":"title-depart-airport"}).text.strip()#class属性的值和实际内容有出入,读者自行辨别arrCityName=i.find("div",{"class":"title-arrive-time"}).text.strip()arrCityTime=i.find("span",{"class":"title-arrive-airport"}).text.strip()date=i.find("div",{"class":"title-time"}).text.split(" ")[1]price=i.find("div",{"class":"title-price"}).text.split(" ")[1]with open('东航特价机票.csv', 'a', newline='') as csvfile:writer = csv.writer(csvfile)writer.writerow([flightNumber,depCityName,depCityTime,arrCityName,arrCityTime,date,price])

        需要注意的事项在代码注释里!

4.可视化分析

1.数据呈现

        共216趟特价航班。

2.导入基本库
import pandas as pd
import numpy as np 
from pyecharts.charts import *
import pyecharts.options as opts
from pyecharts.globals import ChartType, SymbolType
import matplotlib.pyplot as plt
import seaborn as sns
from collections import Counter
import squarify
import warnings
warnings.filterwarnings('ignore')
3.特价机票价格分布 
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号plt.figure(figsize=(12,6))
ax = plt.axes()
# 去掉顶部和右边的边框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
sns.distplot(x=df["特价(元)"].values,hist=True,kde=True,axlabel="特价(元)",hist_kws = {'color':'steelblue'})
plt.title("特价机票价格分布图")
plt.show()

        从图表中可以看出,消费者更倾向于购买价格较低(200至400元)的特价机票,这可能与消费者的预算限制、对价格的敏感度以及购买决策中的其他因素(如航班时间、航空公司等)有关。 

4.特价机票是否具有区域差异性
city=df["出发城市"].values.tolist()+df["到达城市"].values.tolist()
city_freq=dict(Counter(city))
# 创建DataFrame对象
city_df = pd.DataFrame.from_dict(city_freq, orient='index', columns=['total']).reset_index().rename(columns={'index': 'city'})
#筛选出现次数大于等于10次的城市并排序
city_df=city_df[city_df["total"] >=10].sort_values(by='total', ascending=False)pie=(
Pie()
.add(series_name="",data_pair=city_df.loc[:,["city","total"]].to_records(index=False).tolist(),rosetype="radius",radius=["20%","60%"])
.set_global_opts(title_opts=opts.TitleOpts(title="不同城市的特价航班占比"),legend_opts=opts.LegendOpts(pos_left="left",pos_top="middle",orient = 'vertical'))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%"))
)
pie.render_notebook()

         由于特价航班数据中城市数量较多且大部分城市可能只出现1到2次,所以在研究此问题上仅挑选出次数大于等于10次的城市。

        上海的特价航班占比最高,达到了30.98%,表明上海是这些城市中特价航班数量最多或比例最高的城市。其他城市的特价航班占比相对较低,但仍有一定的市场份额。

5.票价和距离的关系 

        因为数据集没提供距离信息,所以需要使用geopy库得到城市的经纬度和城市间的距离。

import geopy.geocoders
from geopy.distance import geodesic
from geopy.geocoders import Nominatim
geopy.geocoders.options.default_timeout = 10
geolocator = Nominatim(user_agent='specify_your_app_name_here')
#添加出发城市和到达城市经纬度信息
df["start_lat"]=df["出发城市"].map({i:geolocator.geocode(i).latitude for i in df['出发城市'].unique()})
df["start_lng"]=df["出发城市"].map({i:geolocator.geocode(i).longitude for i in df['出发城市'].unique()})
df["end_lat"]=df["到达城市"].map({i:geolocator.geocode(i).latitude for i in df['到达城市'].unique()})
df["end_lng"]=df["到达城市"].map({i:geolocator.geocode(i).longitude for i in df['到达城市'].unique()})
# 计算两地距离
df['距离(km)'] = df.apply(lambda row: geodesic((row['start_lat'], row['start_lng']), (row['end_lat'], row['end_lng'])).kilometers, axis=1)

        注意user_agent需要改!!!

        数据集已更新,如上图所示。

# 删除票价和距离列值相同的行
df_filtered=df[~df.duplicated(subset=['特价(元)', '距离(km)'])]
# 分析票价和距离的关系
ax = plt.axes()
# 去掉顶部和右边的边框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
sns.regplot(df_filtered,x="距离(km)",y="特价(元)",marker="+")
plt.title("票价与距离的关系")
plt.show()

        展示了票价与距离之间的正相关关系。 虽然存在距离短票价高和距离长票价低的情况,但总体趋势是随着距离的增加,票价也逐渐增加。

6.航线图
# 航线图   以南京为例
nanjingFlights=df[(df["出发城市"]=="南京") | (df["到达城市"]=="南京")]
points=list(set([(value, "") for value in nanjingFlights["出发城市"]]))
lines=list(zip(nanjingFlights['出发城市'], nanjingFlights['到达城市']))
flag_icon="path://M995.679767 658.818049c-8.943231-1.490539-23.848617-2.981077-44.716157-4.471615-73.03639-8.943231-207.184862-26.829694-295.126638-38.754003l-19.377001-5.962154h-2.981077l-44.716157-13.414848c-4.471616 90.922853-10.43377 166.94032-17.886463 225.071325v10.43377l22.358078 10.43377 70.055313 32.791849c2.981077 1.490539 4.471616 4.471616 4.471616 7.452693l1.490539 55.149927v4.471615c0 2.981077-1.490539 5.962154-4.471616 4.471616l-114.77147-19.377001c-8.943231 22.358079-17.886463 34.282387-31.30131 35.772925h-1.490539c-13.414847 0-23.848617-11.924309-31.30131-35.772925l-114.77147 17.886463c-2.981077 0-4.471616-1.490539-4.471616-4.471616v-4.471616l1.490539-55.149927c0-2.981077 1.490539-5.962154 4.471615-7.452693l70.055313-32.791849 22.358079-10.43377V819.796215c-5.962154-58.131004-10.43377-134.148472-14.905386-225.071324l-46.206696 13.414847h-4.471615l-19.377002 4.471616c-87.941776 10.43377-222.090247 26.829694-295.126637 35.772925-20.86754 2.981077-35.772926 4.471616-44.716158 4.471616-23.848617 2.981077-25.339156-26.829694-7.452692-37.263464 2.981077-1.490539 56.640466-29.810771 123.714701-67.074236v-38.754003c0-14.905386 11.924309-26.829694 26.829695-26.829694s26.829694 11.924309 26.829694 26.829694v8.943232c40.244541-20.86754 81.979622-43.225619 119.243086-64.093159v-44.716157c0-14.905386 11.924309-26.829694 26.829694-26.829695s26.829694 11.924309 26.829694 26.829695v14.905385c23.848617-11.924309 43.225619-23.848617 56.640466-31.30131-1.490539-174.393013 11.924309-308.541485 61.112082-332.390101 2.981077-1.490539 4.471616-1.490539 7.452693-2.981078 1.490539 0 4.471616 0 5.962154-1.490538h5.962154c1.490539 0 4.471616 0 5.962154 1.490538 2.981077 0 4.471616 1.490539 7.452693 2.981078 49.187773 23.848617 62.60262 157.997089 58.131005 332.390101 13.414847 7.452693 32.791849 17.886463 55.149927 29.810772v-14.905386c0-14.905386 11.924309-26.829694 26.829694-26.829694s26.829694 11.924309 26.829695 26.829694v44.716157c37.263464 20.86754 78.998544 43.225619 119.243085 65.583698V506.783115c0-14.905386 11.924309-26.829694 26.829695-26.829694s26.829694 11.924309 26.829694 26.829694v44.716157c68.564774 37.263464 122.224163 67.074236 123.714702 68.564775 25.339156 10.43377 23.848617 41.73508-1.490539 38.754002z"
geolines = Geo(init_opts=opts.InitOpts(width='1280px', height='720px'))
geolines.add_schema(maptype="china",itemstyle_opts=opts.ItemStyleOpts(area_color="LightBlue",border_width=0.5,border_color="#f8911b"))
geolines.add_coordinate("芒市",98.5886667,24.4369028)
geolines.add("",points,type_=ChartType.EFFECT_SCATTER,color="Grey",label_opts=opts.LabelOpts(formatter="{b}",position="bottom",color='black', font_size=10, font_weight='bold'))
geolines.add("出发城市--南京",[tuple for tuple in lines if tuple[0] == '南京'],type_=ChartType.LINES,effect_opts=opts.EffectOpts(symbol=flag_icon, symbol_size=20, color="IndianRed",period=6,trail_length=0),linestyle_opts=opts.LineStyleOpts(curve=0.2,width=2),label_opts=opts.LabelOpts(is_show=False))
geolines.add("到达城市--南京",[tuple for tuple in lines if tuple[1] == '南京'],type_=ChartType.LINES,effect_opts=opts.EffectOpts(symbol=flag_icon, symbol_size=20, color="black",period=6,trail_length=0),linestyle_opts=opts.LineStyleOpts(curve=0.2,width=2),label_opts=opts.LabelOpts(is_show=False))geolines.set_global_opts(title_opts=opts.TitleOpts(title="特价航线--南京",pos_right="center"),
legend_opts=opts.LegendOpts(pos_left="left",orient = 'vertical'),
graphic_opts=[opts.GraphicImage(graphic_item=opts.GraphicItem(id_="logo", z=1),graphic_imagestyle_opts=opts.GraphicImageStyleOpts(image="./background_image.jpg",width=1280,height=720,opacity=0.3),)],
)geolines.render("geo_lines.html")

         以南京为例的航线图中,需注意以下两点:①地图上遗漏了“芒市”这一坐标点,需利用add_coordinate()函数进行补全;②鉴于SymbolType样式较为单调,建议手动增设“飞机”图标以丰富图表内容。

关键字:网站优化推广_网店装修是什么意思_营销策略理论_外贸建站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: