谁来歌曲谁能告诉我我句话说是什么意思,我用MasterCard预定了东西,然后又取消了,我的邮件里收到了这一条消息。

大一英语课上,老师突然用英文问我们班男生一个问题,what kind of girls do you like?(你喜欢什么类型的女生?)&br&&br&要求是前面同学用过的形容词后面的同学尽量不要重复,于是什么smart,active,out-going各种性格的形容词满天飞,后面词穷的同学甚至连sexy都说出来了……&br&&br&结果我是最后一个被点名回答问题的,到我这里几乎所有(我会)的词都被别人说过了……&br&&br&在短暂的沉默之后,我看着老师的眼睛,回答道
&br&&br&& like
you&(像你一样)&br&&br&当时也不确定语法有没有问题,但是当我看到老师脸上淡淡的嫣红,以及同学们投来的不可置信的目光,我知道,这个逼应该装得很完美……
大一英语课上,老师突然用英文问我们班男生一个问题,what kind of girls do you like?(你喜欢什么类型的女生?) 要求是前面同学用过的形容词后面的同学尽量不要重复,于是什么smart,active,out-going各种性格的形容词满天飞,后面词穷的同学甚至连sex…
&p&&b&怎样练成人人羡慕的公狗腰?不要害羞哦!&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-ee1d905b55a731ff80b9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&591& data-rawheight=&501& class=&origin_image zh-lightbox-thumb& width=&591& data-original=&https://pic2.zhimg.com/50/v2-ee1d905b55a731ff80b9_r.jpg&&&/figure&&p&公狗腰这个词汇想必很多人都不清楚,俗话说的好“男人里外都靠腰”,腰部肌肉是身体的核心力量区,强壮的腰部肌肉就是脊柱强有力的保护伞,练好了不仅看着好看,整个人的身体素质也会上升一大步呢!&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-4f9dc4aed04fd889deca328c433e358d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&270& data-rawheight=&251& class=&content_image& width=&270&&&/figure&&p&公狗腰的练成步骤,每组动作15~30个来回&/p&&p&坚持下去,多一天,就离身体强壮,八块腹肌更近一步!&/p&&p&&br&&/p&&h2&第一组&/h2&&figure&&img src=&https://pic4.zhimg.com/50/v2-1f8cbc22bb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&170& class=&content_image& width=&300&&&/figure&&h2&第二组&/h2&&figure&&img src=&https://pic4.zhimg.com/50/v2-3a847f7b03d0dd57e887adb5c73cebdd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&180& class=&content_image& width=&300&&&/figure&&h2&第三组&/h2&&figure&&img src=&https://pic4.zhimg.com/50/v2-48aee4d2dd8df71046fba0d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&156& class=&content_image& width=&300&&&/figure&&h2&第四组&/h2&&figure&&img src=&https://pic3.zhimg.com/50/v2-3d5abecaedd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&332& data-rawheight=&332& class=&content_image& width=&332&&&/figure&&h2&第五组&/h2&&figure&&img src=&https://pic1.zhimg.com/50/v2-c2b4a8b58c1ce_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&382& data-rawheight=&382& class=&content_image& width=&382&&&/figure&&p&练好了,不仅自己有益,女生们也很爱看哦!&/p&
怎样练成人人羡慕的公狗腰?不要害羞哦!公狗腰这个词汇想必很多人都不清楚,俗话说的好“男人里外都靠腰”,腰部肌肉是身体的核心力量区,强壮的腰部肌肉就是脊柱强有力的保护伞,练好了不仅看着好看,整个人的身体素质也会上升一大步呢!公狗腰的练成步骤…
&p&用Python写的第一个程序,是爬取糗事百科上的图片、自动下载到本地、自动分成文件夹保存,当时就觉得,卧糟,太NB了~&/p&&p&第二个程序,当然还是图片爬虫,不过这次,嘿嘿,是妹纸图,你懂得~&/p&&p&然后还跟着别人的代码或教程或者自己写过:&/p&&p&12306火车票查询工具、携程机票查询;&/p&&p&爬取美团电影、豆瓣电影用户评论;&/p&&p&简单的美团餐厅爬虫及根据地理坐标制作简单热力图;&/p&&p&智联招聘爬虫,支持输入查询的职位关键词+城市。并将爬取到的数据分别用Exce和Python(matplotlib)做了数据分析及可视化;&/p&&p&&b&经常用到在线翻译,于是利用Python Gui库(&/b&Tkinter&b&)&/b&做了简单的桌面翻译查询软件;&/p&&p&尝试爬取京东热卖、淘宝淘抢购(还是聚划算)的商品信息,没想到还挺简单的,主要是没做什么防爬虫措施。。。;&/p&&p&利用Python+Selenium+Phantomjs做了一个模拟搜索浏览淘宝商品的程序,可以记录你设定的关键词下,淘宝搜索到的前100页商品信息、信息存到本地mysql或mongoDB。&/p&&p&Python+Scrapy爬取知乎用户关系链~;&/p&&p&用Python玩微信跳一跳,跳了2500+;&/p&&p&过大年之际,用Python的itchat库集成了自己的几个查询系爬虫(查天气查火车查携程机票查快递)做到了微信自动回复的功能!亲朋好友发来的祝福可以自动回复了,避免了尴尬!O(∩_∩)O哈哈~还能查天气查火车查携程机票查快递,对,很好玩很实用~&/p&&p&还有很多想学的:爬虫Scrapy框架,机器学习Tensorflow、图像识别。。。。&/p&&hr&&p&以下转载几个自己做的几个小程序,适合新人,&b&喜欢请点赞~ 谢谢:)&/b&&/p&&p&&b&github:&/b&&a href=&//link.zhihu.com/?target=https%3A//github.com/Flowingsun007/littleSpiders& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flowingsun007/littleSpiders&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python图片文本识别—基于tesseract和百度实现&/a& (更新于18.4.15)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: Python实现微信查天气+火车+飞机+快递&/a&
(更新于18.3.7)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python—itchat下载拼接微信好友头像图&/a& (更新于18.3.6)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python—itchat实现微信自动回复&/a&(更新于18.3.5)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: Python命令行实现—查全国7天天气&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: python命令行查询12306火车票&/a& (更新于18.2.19)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: Python—一行代码情人节画爱心表白&/a& (更新于18.2.14)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: Python多线程threading—图片下载&/a& (更新于18.2.5)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python—10行代码查快递&/a& (更新于18.2.2)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:用Python发邮件&/a&(更新于18.1.23)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python爬虫入门—图片下载&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:用Python实现—携程机票查询&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:智联Python相关职位的数据分析及可视化-Pandas&Matplotlib篇&/a&&/p&&hr&&p&以下两个小项目,都比较适合练手。&/p&&p&第一个是命令行携程机票查询,模仿的是12306火车票查询器做的;&/p&&p&第二个是一个智联招聘的爬虫,包括后面数据处理、分析以及用matplotlib进行了可视化。&/p&&p&代码都有,欢迎拿去~&/p&&hr&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-b8fd8a32f0dfab58b37e386_180x120.jpg& data-image-width=&872& data-image-height=&604& class=&internal&&Lyon:用Python实现—携程机票查询&/a&&p&以前参考别人的代码,用Python做了一个12306命令行式的火车票查询工具,感觉还挺有意思的!于是自己又做了一个类似的——携程机票查询器。&/p&&p&携程官网查询的效果是这样的:&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-89f157c0a8bd7d891fa44_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1190& data-rawheight=&874& class=&origin_image zh-lightbox-thumb& width=&1190& data-original=&https://pic3.zhimg.com/50/v2-89f157c0a8bd7d891fa44_r.jpg&&&/figure&&p&Python命令行界面查询的效果是这样的:&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-b8fd8a32f0dfab58b37e386_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&872& data-rawheight=&604& class=&origin_image zh-lightbox-thumb& width=&872& data-original=&https://pic3.zhimg.com/50/v2-b8fd8a32f0dfab58b37e386_r.jpg&&&/figure&&p&输入出发地、目的地、乘机日期,即可看到可选的航班、机场、出发到达时间、票价等信息。&/p&&p&视频演示效果如下:&/p&&a class=&video-box& href=&//link.zhihu.com/?target=https%3A//www.zhihu.com/video/621056& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic2.zhimg.com/80/v2-029a73d6a55f5a1c9ed8d56c1c84f71d_b.jpg& data-lens-id=&621056&&
&img class=&thumbnail& src=&https://pic2.zhimg.com/80/v2-029a73d6a55f5a1c9ed8d56c1c84f71d_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/621056&/span&
&/a&&p&程序的源码如下:&/p&&p&1.air_stations.py&/p&&p&2.airline_ticket.py&/p&&div class=&highlight&&&pre&&code class=&language-text&&#1.air_stations.py
import json
import requests
from pprint import pprint
url = 'http://webresource.c-ctrip.com/code/cquery/resource/address/flight/flight_new_poi_gb2312.js?CR__00_00_00'
response = requests.get(url,verify=False)
station = re.findall(u'([\u4e00-\u9fa5]+)\(([A-Z]+)\)', response.text)
stations = dict(station)
pprint(stations,indent = 4)
&/code&&/pre&&/div&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&2.airline_ticket.py
#此程序可定出发日期、出发城市、目的城市!(模仿了上一个12306火车订票查询程序)
import requests,json,os
from docopt import docopt
from prettytable import PrettyTable
from colorama import init,Fore
from air_stations import stations
fromCity = input('Please input the city you want leave :')
toCity = input('Please input the city you will arrive :')
tripDate = input('Please input the date(Example:) :')
class TrainsCollection:
header = '航空公司 航班 机场 时间 机票价格 机场建设费'.split()
def __init__(self,airline_tickets):
self.airline_tickets = airline_tickets
def plains(self):
#航空公司的总表没有找到,但是常见航空公司也不是很多就暂时用这个dict{air_company}来收集!
#如果strs没有查询成功,则会返回一个KeyError,表示此dict中未找到目标航空公司,则会用其英文代码显示!
air_company = {&G5&:&华夏航空&,&9C&:&春秋航空&,&MU&:&东方航空&,&NS&:&河北航空&,&HU&:&海南航空&,&HO&:&吉祥航空&,&CZ&:&南方航空&,&FM&:&上海航空&,&ZH&:&深圳航空&,&MF&:&厦门航空&,&CA&:&中国国航&,&KN&:&中国联航&}
for item in self.airline_tickets:
strs = air_company[item['alc']]
except KeyError:
strs = item['alc']
airline_data = [
Fore.BLUE + strs + Fore.RESET,
Fore.BLUE + item['fn'] + Fore.RESET,
'\n'.join([Fore.YELLOW + item['dpbn'] + Fore.RESET,
Fore.CYAN + item['apbn'] + Fore.RESET]),
'\n'.join([Fore.YELLOW + item['dt'] + Fore.RESET,
Fore.CYAN + item['at'] + Fore.RESET]),
item['lp'],
item['tax'],
yield airline_data
def pretty_print(self):
#PrettyTable()用于在屏幕上将查询到的航班信息表逐行打印到终端
pt = PrettyTable()
pt._set_field_names(self.header)
for airline_data in self.plains:
pt.add_row(airline_data)
def doit():
headers = {
&Cookie&:&自定义&,
&User-Agent&: &自定义&,
arguments = {
'from':fromCity,
'to':toCity,
'date':tripDate
DCity1 = stations[arguments['from']]
ACity1 = stations[arguments['to']]
DDate1 = arguments['date']
url = (&http://flights.ctrip.com/domesticsearch/search/SearchFirstRouteFlights?DCity1={}&ACity1={}&SearchType=S&DDate1={}&).format(DCity1,ACity1,DDate1)
r = requests.get(url,headers = headers,verify=False)
print(&Some Error shows in requests.get(url)&)
print(url)
airline_tickets = r.json()['fis']
TrainsCollection(airline_tickets).pretty_print()
if __name__ == '__main__':
&/code&&/pre&&/div&&p&其实,此小程序还可以拓展,譬如将查询记录存到本地电脑(txt格式、或者存到数据库里)或者更厉害的还可以设置定时自动查询;还可以设置查询到自动发邮箱提醒;还可以用Python的GUI库将此程序做成桌面软件的形式。。。。&/p&&hr&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-131ba26ddec_180x120.jpg& data-image-width=&1266& data-image-height=&737& class=&internal&&Lyon:智联Python相关职位的数据分析及可视化-Pandas&Matplotlib篇&/a&&p&,by—&a href=&//link.zhihu.com/?target=http%3A//localhost%3A8080/Lyon/foreviewSingleBlog%3FId%3D12%23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&阳光流淌&/a&&/p&&h2&上一篇,我用了Excel对爬虫采集到的智联招聘数据进行了数据分析及可视化,用到软件是Excel, 这一篇,我们打算完全用Python来做同样的事。用到的库有Pandas、Matplotlib。np、pd、plt分别是numpy、pandas、matplotlib.pyplot的常用缩写。&/h2&&p&Numpy(Numerical Python的简称)是Python科学计算的基础包。它提供了以下功能:&/p&&ol&&li&快速高效的多维数组对象ndarray。&/li&&li&用于对数组执行元素级计算以及直接对数组执行数学运算的函数。&/li&&li&用于读写硬盘上基于数组的数据集的工具。&/li&&li&线性代数运算、傅里叶变换,以及随机数生成。&/li&&li&用于将C、C++、Fortran代码集成到Python的工具。&/li&&/ol&&p&除了为Python提供快速的数组处理能力,Numpy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器。对于数值型数据,Numpy数组在存储和处理数据时要比内置的Python数据结构高效的多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作Numpy数组中的数据,无需进行任何数据复制工作。&br&&/p&&p&Pandas这个名字本身源于panel data(面板数据,这是计量经济学中关于多维结构化数据集的一个术语)以及Python data analysis。pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数。Pandas中用的最多的是DataFrame,它是一个面向列的二维表结构,且含有行标和列标。pandas兼具numpy高性能的数组计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。&/p&&p&Matplotlib是Python中常用的可视化绘图库,可以通过简单的几行代码生成直方图,功率谱,条形图,错误图,散点图等。Seaborn、ggplot、等诸多Python可视化库均是在此基础上开发的,所以学会matplotlib的基础操作还是很有必要的!它和Ipython结合的很好,提供了一种非常好用的交互式数据绘图环境。绘制的图表也是交互式的,你可以利用绘图窗口中的工具栏放大图表中的某个区域或对整个图表进行平移浏览。&/p&&h2&数据来源:&/h2&&p&Python爬虫爬取了智联招聘关键词:【Python】、全国30个主要城市的搜索结果,总职位条数:18326条(行),其中包括【职位月薪】、【公司链接】、【工作地点】、 【岗位职责描述】等14个字段列,和一个索引列【ZL_Job_id】共计15列。数据存储在本地MySql服务器上,从服务器上导出json格式的文件,再用Python进行数据读取分析和可视化。&/p&&h2&数据简单清洗:&/h2&&p&1.首先在终端中打开输入ipython --pylab。在Ipython的shell界面里导入常用的包numpy、pandas、matplotlib.pyplot。用pandas的read_json()方法读取json文件,并转化为用df命名的DataFrame格式文件。(DataFrame格式是Pandas中非常常用且重要的一种数据存储格式、类似于Mysql和Excel中的表。)&/p&&div class=&highlight&&&pre&&code class=&language-text&&import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_json('/Users/zhaoluyang/Desktop/Python_全国JSON.json')
#查看df的信息
df.columns
&/code&&/pre&&/div&&figure&&img src=&https://pic1.zhimg.com/50/v2-f679fb1c4acba7ebdfbd697a9fedcf10_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&884& data-rawheight=&789& class=&origin_image zh-lightbox-thumb& width=&884& data-original=&https://pic1.zhimg.com/50/v2-f679fb1c4acba7ebdfbd697a9fedcf10_r.jpg&&&/figure&&p&可以看到读取的df格式文件共有15列,18326行,pandas默认分配了索引值从0~18325。还有一点值得注意的:全部的15列都有18326个非空值,因为当初写爬虫代码时设置了, 如果是空值,譬如:有一条招聘信息其中【福利标签】空着没写,那么就用字符串代替,如“found no element”。&/p&&p&2.读取JSON文件时pandas默认分配了从0开始的索引,由于文件'ZL_Job_id'列中自带索引,故将其替换!替换后,用sort_index()给索引重新排列。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df.index = df['ZL_Job_id']#索引列用'ZL_Job_id'列替换。
del(df['ZL_Job_id'])#删除原文件中'ZL_Job_id'列。
df_sort = df.sort_index()#给索引列重新排序。
df = df_sort
df[['工作地点','职位月薪']].head(10)
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-0b51bcac2a25a476cc795_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&492& data-rawheight=&286& class=&origin_image zh-lightbox-thumb& width=&492& data-original=&https://pic2.zhimg.com/50/v2-0b51bcac2a25a476cc795_r.jpg&&&/figure&&p&&br&&/p&&p&3.下面,将进行【职位月薪】列的分列操作,新增三列【bottom】、【top】、【average】分别存放最低月薪、最高月薪和平均月薪。 其中try语句执行的是绝大多数情况:职位月薪格式如:元/月,为此需要对【职位月薪】列用正则表达式逐个处理,并存放至三个新列中。 处理后bottom = 8000,top = 10000,average = 9000. 其中不同语句用于处理不同的情况,譬如【职位月薪】=‘面议’、‘found no element’等。对于字符形式的‘面议’、‘found no element’ 处理后保持原字符不变,即bottom = top = average = 职位月薪。&br&q1,q2,q3,q4用来统计各个语句执行次数.其中q1统计职位月薪形如‘元/月’的次数;q2统计形如月收入‘10000元/月以下’;q3代表其他情况如‘found no element’,‘面议’的次数;q4统计失败的特殊情况。&/p&&div class=&highlight&&&pre&&code class=&language-text&&import re
df['bottom'] = df['top'] = df['average'] = df['职位月薪']
pattern = re.compile('([0-9]+)')
q1=q2=q3=q4=0
for i in range(len(df['职位月薪'])):
item = df['职位月薪'].iloc[i].strip()
result = re.findall(pattern,item)
if result:
#此语句执行成功则表示result[0],result[1]都存在,即职位月薪形如‘元/月’
df['bottom'].iloc[i],df['top'].iloc[i] = result[0],result[1]
df['average'].iloc[i] = str((int(result[0])+int(result[1]))/2)
#此语句执行成功则表示result[0]存在,result[1]不存在,职位月薪形如‘10000元/月以下’
df['bottom'].iloc[i] = df['top'].iloc[i] = result[0]
df['average'].iloc[i] = str((int(result[0])+int(result[0]))/2)
#此语句执行成功则表示【职位月薪】中并无数字形式存在,可能是‘面议’、‘found no element’
df['bottom'].iloc[i] = df['top'].iloc[i] = df['average'].iloc[i] = item
except Exception as e:
print(q4,item,repr(e))
for i in range(100):#测试一下看看职位月薪和bottom、top是否对的上号
print(df.iloc[i][['职位月薪','bottom','top','average']])#或者df[['职位月薪','bottom','top','average']].iloc[i]也可
df[['职位月薪','bottom','top','average']].head(10)
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-f17c93681d3dfae5e4f3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&595& data-rawheight=&516& class=&origin_image zh-lightbox-thumb& width=&595& data-original=&https://pic2.zhimg.com/50/v2-f17c93681d3dfae5e4f3_r.jpg&&&/figure&&p&经过检查,可以发现【职位月薪】和新增的bottom、top、average列是能对的上。其中形如‘元/月’的有16905条、形如‘10000元以下’的 有61条、'found no element'和'面议'加起来有1360条,总数18326条,可见是正确的。&/p&&p&4.进行【工作地点】列的处理,新增【工作城市】列,将工作地点中如‘苏州-姑苏区’、‘苏州-工业园区’等统统转化为‘苏州’存放在【工作城市】列。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df['工作城市'] = df['工作地点']
pattern2 = re.compile('(.*?)(\-)')
df_city = df['工作地点'].copy()
for i in range(len(df_city)):
item = df_city.iloc[i].strip()
result = re.search(pattern2,item)
if result:
print(result.group(1).strip())
df_city.iloc[i] = result.group(1).strip()
print(item.strip())
df_city.iloc[i] = item.strip()
df['工作城市'] = df_city
df[['工作地点','工作城市']].head(20)
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-fbfd69ce7d8dd39ce8ecf23a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&448& data-rawheight=&451& class=&origin_image zh-lightbox-thumb& width=&448& data-original=&https://pic2.zhimg.com/50/v2-fbfd69ce7d8dd39ce8ecf23a_r.jpg&&&/figure&&p&检查一下,没有错误,可以进行下一步的操作了!&/p&&h2&数据分析和可视化&/h2&&p&从可读性来看,应该是先进行数据清洗,然后进行分析及可视化,但是实际过程中,往往是交织在一起的, 所有下面让我们一步步来,完成所有的清洗、分析和可视化工作。除了具体的公司和职位名称以外,我们还比较关心几个关键词: 平均月薪、工作经验、工作城市、最低学历和岗位职责描述,这里岗位职责描述以后会用python分词做词云图,所以目前筛选出 【平均月薪】、【工作经验】、【工作城市】、【最低学历】这四个标签,这些标签可以两两组合产生各种数据。譬如我想知道各个城市的招聘数量分布情况, 会不会大部分的工作机会都集中在北上广深?是不是北上广深的平均工资也高于其他城市?我想知道Python这个关键词的18000多条招聘数据中 对学历的要求和对工作经验的要求,以及它们分别占比多少?我还想知道平均月薪和工作经验的关系?最低学历和平均月薪的关系? 和上一篇(Execel篇)类似,不同的是,这次我们完全用Python实现同样的操作。&/p&&h2&1.各个城市职位数量及分布&/h2&&p&根据猜想,北上广深,一定占据了Python这个关键词下大部分的工作机会,会不会符合28定律?20%的城市占据了80%的岗位? 有可能!我们先用df.工作城市.value_counts()看一下究竟有多少个城市,以及他们各自有多少条工作数据?&/p&&div class=&highlight&&&pre&&code class=&language-text&&df.工作城市.value_counts()#等价于df['工作城市'].value_counts()
#再用count()来看一下统计出来的城市数量
df.工作城市.value_counts().count()
type(df.工作城市.value_counts())#用type()查看下类型。
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-23cf8b0e216e0a9aa76b6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&448& data-rawheight=&578& class=&origin_image zh-lightbox-thumb& width=&448& data-original=&https://pic4.zhimg.com/50/v2-23cf8b0e216e0a9aa76b6_r.jpg&&&/figure&&p&可以看到,明明设置的是搜索30个城市,怎么变成了40?像延边、珲春、白山。。。。是什么鬼?想了一下,这些城市是搜索关键词城市‘吉林市’时,自动冒出来的;还有95个‘found no element’,是这些职位链接本身就没有填写工作城市,为了避免干扰,要把他们统统替换成空值。用df_工作城市 = df['工作城市'].replace()&/p&&div class=&highlight&&&pre&&code class=&language-text&&#将原来df['工作城市']列中选定的字段替换成空值nan
df_工作城市 = df['工作城市'].replace(['found no element','松原','辽源','珲春','白山','公主岭','白城','延边','四平','通化'],np.nan)
#查看替换后各个城市职位计数
df_工作城市.value_counts()
#查看替换后城市所包含的职位总数;查看替换后的城市数量,是否等于30.
df_工作城市
#将新的[df_工作城市]列添加到df表中,留作备用
df['df_工作城市'] = df_工作城市
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-aceb11ca737afb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&828& data-rawheight=&718& class=&origin_image zh-lightbox-thumb& width=&828& data-original=&https://pic3.zhimg.com/50/v2-aceb11ca737afb_r.jpg&&&/figure&&p&看了一下,没有问题,现在df_工作城市中筛选出了30个城市,合计18211条职位数据。 为了数据完整性,df表保持原样,我们用df_工作城市直接操作,进行下一步的可视化。先直接上代码和图,再一一解释下。&/p&&div class=&highlight&&&pre&&code class=&language-text&&fig1 = plt.figure(1,facecolor = 'black')#设置视图画布1
ax1 = fig1.add_subplot(2,1,1,facecolor='#4f4f4f',alpha=0.3)#在视图1中设置子图1,背景色灰色,透明度0.3(figure.add_subplot 和plt.suplot都行)
plt.tick_params(colors='white')#设置轴的颜色为白色
df_工作城市.value_counts().plot(kind='bar',rot=0,color='#ef9d9a')#画直方图图
#设置图标题,x和y轴标题
title = plt.title('城市——职位数分布图',fontsize=18,color='yellow')#设置标题
xlabel = plt.xlabel('城市',fontsize=14,color='yellow')#设置X轴轴标题
ylabel = plt.ylabel('职位数量',fontsize=14,color='yellow')#设置Y轴轴标题
#设置说明,位置在图的右上角
text1 = ax1.text(25,4500,'城市总数:30(个)',fontsize=12, color='cyan')#设置说明,位置在图的右上角
text2 = ax1.text(25,4000,'职位总数:18326(条)',fontsize=12, color='cyan')
text3 = ax1.text(25,3500,'有效职位:18211(条)',fontsize=12, color='red')
#添加每一个城市的坐标值
for i in range(len(list_1)):
ax1.text(i-0.3,list_1[i],str(list_1[i]),color='yellow')
#可以用plt.grid(True)添加栅格线
#可以用下面语句添加注释箭头。指向上海,xy为坐标值、xytext为注释坐标值,facecolor为箭头颜色。
#arrow = plt.annotate('职位数:3107', xy=(1,3107), xytext=(3, 4000),color='blue',arrowprops=dict(facecolor='blue', shrink=0.05))
ax2 = fig1.add_subplot(2,1,2)#设置子图2,是位于子图1下面的饼状图
#为了方便,显示前8个城市的城市名称和比例、其余的不显示,用空字符列表替代,为此需要构造列表label_list和一个空字符列表['']*23。
x = df_工作城市.value_counts().values#x是数值列表,pie图的比例根据数值占整体的比例而划分
label_list = []#label_list是构造的列表,装的是前8个城市的名称+职位占比。
for i in range(8):
t = df_工作城市.value_counts().values[i]/df_工作城市.value_counts().sum()*100
city = df_工作城市.value_counts().index[i]
percent = str('%.1f%%'%t)
label_list.append(city+percent)
#labels参数原本是与数值对应的标签列表,此处30个城市过多,所以只取了前8个城市显示。
#explode即饼图中分裂的效果explode=(0.1,1,1,。。)表示第一块图片显示为分裂效果
labels = label_list + ['']*22
explode = tuple([0.1]+[0]*29)
plt.pie(x,explode=explode,labels=labels,textprops={'color':'yellow'})
#可加参数autopct='%1.1f%%'来显示饼图中每一块的比例,但是此处30个城市,如果全显示的话会非常拥挤不美观,所以只能手动通过labels参数来构造。
#若要显示标准圆形,可以添加:plt.axis('equal')
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-131ba26ddec_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1266& data-rawheight=&737& class=&origin_image zh-lightbox-thumb& width=&1266& data-original=&https://pic4.zhimg.com/50/v2-131ba26ddec_r.jpg&&&/figure&&p&可以看见,这个曲线下降的弧度还是挺美的,北上深杭广5个城市占据了超过60%以上的职位数。其中北京当之无愧的占据了四分之一的Python工作数量,不愧为帝都。 上海以3107条职位排名第二,可见上海虽然经济超越北京,在互联网环境和工作机遇方面还需努力!深圳作为中国的科技中心,排名第三我是没疑问的,杭州竟然超过广州排名第四!不过也可以想到,阿里巴巴、百草味等等电商产业带动了整个杭州的互联网文化!&br&【北上深杭广】+成都、南京、郑州,这8个城市占据了全国30座城市中,近80%的工作机会!剩下的22个城市合起来只占据了20%,果然,是基本符合28定律的。。。&/p&&h2&2.工作经验-职位数量及分布&/h2&&p&Python虽然是一名比较老的语言,但是在人们的印象中火起来也就最近几年,Python相关的工作对于【工作经验】是怎样要求的呢?让我们来看看!&/p&&div class=&highlight&&&pre&&code class=&language-text&&df.工作经验.value_counts()#统计【工作经验】下各个字段的累计和
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-f7cd3ef51e5d6341a60dd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&358& data-rawheight=&313& class=&content_image& width=&358&&&/figure&&p&&br&&/p&&p&可以看见出现了一些很数字少量的字段譬如“5年以上”,“2年以上”,“1-2年”,“1年以上”等,这些标签下职位的数量都在10以内,不太具备统计意义,所以我们作图的时候不想让他们出现,必须筛选掉。 下面我们还是通过同样的步骤来清除掉此类数据。&/p&&div class=&highlight&&&pre&&code class=&language-text&&= df['工作经验'].replace(['found no element','3年以上','1年以上','5年以上','2年以上','1-2年'],np.nan)
df_工作经验.value_counts()
df_工作经验.value_counts().sum()
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-da9ddb13ff92e87081aed5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&814& data-rawheight=&353& class=&origin_image zh-lightbox-thumb& width=&814& data-original=&https://pic3.zhimg.com/50/v2-da9ddb13ff92e87081aed5_r.jpg&&&/figure&&p&&br&&/p&&p&现在,可以进行下一步可视化了,还是做2张图:直方图和饼图。通过这两张图可以直观地看到这么多职位中对不同工作经验的要求占比,好做到心里有数!&/p&&div class=&highlight&&&pre&&code class=&language-text&&fig2 = plt.figure(2,facecolor = 'black')
ax2_1 = fig2.add_subplot(2,1,1,facecolor='#4f4f4f',alpha=0.3)
plt.tick_params(colors='white')
df_工作经验.value_counts().plot(kind = 'bar',rot = 0,color='#7fc8ff')
title = plt.title('工作经验——职位数分布图',fontsize = 18,color = 'yellow')
xlabel = plt.xlabel('工作经验',fontsize = 14,color = 'yellow')
ylabel = plt.ylabel('职位数量',fontsize = 14,color = 'yellow')
plt.grid(True)
text1_ = ax2_1.text(5,5600,'城市总数:30(个)',fontsize=12, color='yellow')
text2 = ax2_1.text(5,4850,'职位总数:18326(条)',fontsize=12, color='yellow')
text3 = ax2_1.text(5,4100,'有效职位:18215(条)',fontsize=12, color='cyan')
&/code&&/pre&&/div&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&#设置子图2,是位于子图1下面的饼状图
ax2_2 = fig2.add_subplot(2,1,2)
#x是数值列表,pie图的比例根据数值占整体的比例而划分
x2 = df_工作经验.value_counts().values
labels = list(df_工作经验.value_counts().index[:5])+ ['']*2
explode = tuple([0.1,0.1,0.1,0.1,0.1,0.1,0.1])
plt.pie(x2,explode=explode,labels=labels,autopct='%1.1f%%',textprops={'color':'yellow'})
plt.axis('equal')#显示为等比例圆形
#设置图例,方位为右下角
legend = ax2_2.legend(loc='lower right',shadow=True,fontsize=12,edgecolor='cyan')
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-2c9de5eb33d9a655cb85c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1268& data-rawheight=&740& class=&origin_image zh-lightbox-thumb& width=&1268& data-original=&https://pic3.zhimg.com/50/v2-2c9de5eb33d9a655cb85c_r.jpg&&&/figure&&p&总共得到18215条职位。从直方图里可以明显看出工作机会集中在'不限'、'1-3年'、'3-5年', 其中工作经验要求3年以下的(【无经验】+【不限】+【1年以下】+【1-3年】)合计11501条职位,占比超过63%,看来即使是初入门者,大家的机会也还是有不少的! (PS:最后,在df表中添加一列'df_工作经验',以后筛选时就可以直接用了,df['df_工作经验']=df_工作经验)&/p&&p&&br&&/p&&h2&3.工作经验-平均月薪&/h2&&p&这个嘛,大家闭着眼都能想到!肯定是工作经验越久的拿钱越多了!再猜猜?无经验的和5-10年经验的收入差距有多大?这个,嘿嘿就不好猜了,让我们来看看吧!&/p&&p&1.第一步,要想统计工作经验和平均月薪的关系,那么我们先看看df中对应的列df.工作经验和df.average。之前我们构造了一列df_工作经验,把df.工作经验中几个样本容量小于10的值和‘found no element’全筛选掉了,故df_工作经验还能继续使用。现在,让我们看看df.average的信息。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df.average.value_counts()
&/code&&/pre&&/div&&p&可以看到,其中有1265个值是‘面议’,有95个值是‘found no element’,这些值需要替换成空值,不然会影响下一步工资的计算。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df_平均月薪 = df['average'].replace(['面议','found no element'],np.nan)
&/code&&/pre&&/div&&p&2.好了,第一步的简单数据清洗完成了,我们可以思考下一步了,现在我们想要得到的是不同工作经验字段下的平均月薪&/p&&p&A. 首先我需要把df_工作经验和df_平均月薪这两列元素放在一起,构造一个DataFrame用于存放df_工作经验和df_平均月薪这两列元素,且方便进一步的groupby操作。&br&B. 其次我需要把df_平均月薪列根据df_工作经验进行分组(用groupby),分组后我可以求得df_工作经验下各个字段的月薪的计数、最大值最小值、累加和、平均值等一系列数据。&br&C. 当然此处我只需要平均值。对分组后的grouped用mean()方法,就可以轻松统计分组内各项的平均值了。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df3=pd.DataFrame(data={'工作经验':df['df_工作经验'],'平均月薪':df_平均月薪})
df3.info()
grouped3 = df3['平均月薪'].groupby(df3['工作经验'])
grouped3.mean()
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-b1fb6e906acb1b6c0105aea3cbfc01fa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&566& data-rawheight=&349& class=&origin_image zh-lightbox-thumb& width=&566& data-original=&https://pic2.zhimg.com/50/v2-b1fb6e906acb1b6c0105aea3cbfc01fa_r.jpg&&&/figure&&p&&br&&/p&&p&在进行grouped3.mean()时,我们发现报错了:DataError: No numeric types to aggregate,看一下,原来df_平均月薪列里的值都是字符型str,并不是数值型的float,因为前面的步骤没有做好,留下了这个bug,无奈我们需要对值类型做个转换。&/p&&div class=&highlight&&&pre&&code class=&language-text&&#构造一个listi存放转化后float型的‘平均月薪’
pattern = re.compile('([0-9]+)')
listi = []
for i in range(len(df.average)):
item = df.average.iloc[i].strip()
result = re.findall(pattern,item)
if result:
listi.append(float(result[0]))
elif (item.strip()=='found no element' or item.strip()=='面议'):
listi.append(np.nan)
print(item)
except Exception as e:
print(item,type(item),repr(e))
#将df3.平均月薪列替换掉,同时给df新增一列'df_平均月薪'做备用。
df3['平均月薪'] = listi
df['df_平均月薪'] = df3['平均月薪']
#看看更新后的数据是否正确
df3['平均月薪'].value_counts()#统计每个月薪字段的个数
df3['平均月薪'][:10]#查看前10个值
type(df3['平均月薪'][1])#看看现在月薪的类型是不是浮点型
df3['平均月薪'].value_counts().sum()#看看月薪样本总数
df3['平均月薪'].mean()#看看这16966个月薪样本的平均值是多少?
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-46e8184cff84166bd14c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&457& data-rawheight=&438& class=&origin_image zh-lightbox-thumb& width=&457& data-original=&https://pic2.zhimg.com/50/v2-46e8184cff84166bd14c_r.jpg&&&/figure&&p&可以看到,替换后的df3['平均月薪']值从str变为了可以计算的float,月薪样本总数16966个,样本的平均月薪14197元。好,现在终于OK了,让我们再回到之前的步骤:&/p&&div class=&highlight&&&pre&&code class=&language-text&&grouped3 = df3['平均月薪'].groupby(df3['工作经验'])
grouped3.mean()
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-9dbc4da056a42ba96d731_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&583& data-rawheight=&252& class=&origin_image zh-lightbox-thumb& width=&583& data-original=&https://pic4.zhimg.com/50/v2-9dbc4da056a42ba96d731_r.jpg&&&/figure&&p&好了,完美,格式对了,数据有了,现在可以来画图了!但是再看看,还不是那么完美,数据大小排列很乱,而且小数点那么多。。。好吧,让我们再简单处理下&/p&&div class=&highlight&&&pre&&code class=&language-text&&#新增一个平均值,即所有非空df3['平均月薪']的平均值
s3 = pd.Series(data = {'平均值':df3['平均月薪'].mean()})
result3 = grouped3.mean().append(s3)
#sort_values()方法可以对值进行排序,默认按照升序,round(1)表示小数点后保留1位小数。
result3.sort_values(ascending=False).round(1)
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-b11bebd440a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&610& data-rawheight=&306& class=&origin_image zh-lightbox-thumb& width=&610& data-original=&https://pic2.zhimg.com/50/v2-b11bebd440a_r.jpg&&&/figure&&p&&br&&/p&&p&3.数据可视化&/p&&p&这次我们画一个躺倒的柱状图(barh),用ggplot的风格来画。&/p&&div class=&highlight&&&pre&&code class=&language-text&&matplotlib.style.use('ggplot')
fig3 = plt.figure(3,facecolor = 'black')
ax3 = fig3.add_subplot(1,1,1,facecolor='#4f4f4f',alpha=0.3)
result3.sort_values(ascending=False).round(1).plot(kind='barh',rot=0)
#设置标题、x轴、y轴的标签文本
title = plt.title('工作经验——平均月薪分布图',fontsize = 18,color = 'yellow')
xlabel= plt.xlabel('平均月薪',fontsize = 14,color = 'yellow')
ylabel = plt.ylabel('工作经验',fontsize = 14,color = 'yellow')
#添加值标签
list3 = result3.sort_values(ascending=False).values
for i in range(len(list3)):
ax3.text(list3[i],i,str(int(list3[i])),color='yellow')
#设置标识箭头
arrow = plt.annotate('Python平均月薪:14197元/月', xy=(), xytext=(),color='yellow',fontsize=16,arrowprops=dict(facecolor='cyan', shrink=0.05))
#设置图例注释(16966来源:df2['平均月薪'].value_counts().sum())
text= ax3.text(,'月薪样本数:16966(个)',fontsize=16, color='cyan')
#设置轴刻度文字颜色为白色
plt.tick_params(colors='white')
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-76e10a13ebc5d3da79940_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1311& data-rawheight=&797& class=&origin_image zh-lightbox-thumb& width=&1311& data-original=&https://pic4.zhimg.com/50/v2-76e10a13ebc5d3da79940_r.jpg&&&/figure&&p&&br&&/p&&p&通过图表,我们可以直观地看到,Python关键词下的职位月薪是随着工作经验增长而递增的(这不是说了一句废话么?!囧) 其中【无经验】的平均月薪最低,只有5842,相比之下【10年以上】经验的,平均月薪达到了恐怖的34890,约达到了【无经验】月薪的6倍之多!!! 【1年以下】的平均月薪7579,还勉强凑合,【1-3年】的已经破万了,达到了近12000元/月的水准。最后让我们看看平均值吧,由于‘被平均’的缘故,16966条月薪样本的均值是14197元,有没有让你满意呢?&br&&/p&&h2&4.工作城市-平均月薪&/h2&&p&对了,刚才说到北上广深占据了全国大部分的工作机会,那么北上广深的平均月薪如何呢?会不会也碾压小城市?让我们来看看! 和之前的套路一样,我们还是要构造一个DataFrame,包含两列,一列是【平均月薪】,一列是【工作城市】,然后对df4进行groupby操作,还是很简单的!不过,经过上次的教训,平均月薪一定要是数值型的,str型的计算不了。&/p&&div class=&highlight&&&pre&&code class=&language-text&&#此处df['df_工作城市']是之前经过筛选后的30个城市数据
df4=pd.DataFrame(data={'工作城市':df['df_工作城市'],'平均月薪':df['df_平均月薪']})
df4.info()
grouped4 = df4['平均月薪'].groupby(df4['工作城市'])
grouped4.mean()#查看对30个城市分组后,各个城市月薪的平均值
grouped4.count().sum()#查看对30个城市分组后筛选出的平均月薪样本数
#新增一个平均值,即所有非空df2['平均月薪']的平均值
s4 = pd.Series(data = {'平均值':df['df_平均月薪'].mean()})
result4 = grouped4.mean().append(s4)
#sort_values()方法可以对值进行排序,默认按照升序,round(1)表示小数点后保留1位小数。
result4.sort_values(ascending=False).round(1)
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-3b408c0a6be3e22aeb71a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&551& data-rawheight=&698& class=&origin_image zh-lightbox-thumb& width=&551& data-original=&https://pic3.zhimg.com/50/v2-3b408c0a6be3e22aeb71a_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/50/v2-bdadef5d979c4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&619& data-rawheight=&706& class=&origin_image zh-lightbox-thumb& width=&619& data-original=&https://pic1.zhimg.com/50/v2-bdadef5d979c4_r.jpg&&&/figure&&p&数据构造好了,进行下一步,可视化。&/p&&div class=&highlight&&&pre&&code class=&language-text&&#可以通过style.available查看可用的绘图风格,总有一款适合你
matplotlib.style.use('dark_background')
fig4 = plt.figure(4)
ax4 = fig4.add_subplot(1,1,1)#可选facecolor='#4f4f4f',alpha=0.3,设置子图,背景色灰色,透明度0.3
result4.sort_values(ascending=False).round(1).plot(kind='bar',rot=30)#可选color='#ef9d9a'
#设置图标题,x和y轴标题
title = plt.title(u'城市——平均月薪分布图',fontsize=18,color='yellow')#设置标题
xlabel = plt.xlabel(u'城市',fontsize=14,color='yellow')#设置X轴轴标题
ylabel = plt.ylabel(u'平均月薪',fontsize=14,color='yellow')#设置Y轴轴标题
#设置说明,位置在图的右上角
text1 = ax4.text(25,16250,u'城市总数:30(个)',fontsize=12, color='#FF00FF')#设置说明,位置在图的右上角
text2 = ax4.text(25,15100,u'月薪样本数:16946(条)',fontsize=12, color='#FF00FF')
#添加每一个城市的坐标值
list_4 = result4.sort_values(ascending=False).values
for i in range(len(list_4)):
ax4.text(i-0.5,list_4[i],int(list_4[i]),color='yellow')
#设置箭头注释
arrow = plt.annotate(u'全国月薪平均值:14197元/月', xy=(4.5,14197), xytext=(7,15000),color='#9B30FF',fontsize=14,arrowprops=dict(facecolor='#FF00FF', shrink=0.05))
#设置轴刻度文字颜色为粉色
plt.tick_params(colors='pink')
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-5b97b12128fea0cdb97f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1310& data-rawheight=&820& class=&origin_image zh-lightbox-thumb& width=&1310& data-original=&https://pic3.zhimg.com/50/v2-5b97b12128fea0cdb97f_r.jpg&&&/figure&&p&可以看见,Python这个关键词下,全国16946条样本的月薪平均值为14197元/月,平均月薪排名前5的城市分别是:北京、上海、深圳、杭州、广州。哎,记得之前城市—职位数分布图么?全国30个城市中,职位数排名前5 的也是这5座城市!看来北上广深杭不仅集中了全国大部分的职位数量、连平均工资也是领跑全国的!不禁让人觉得越大越强!但是在超级大城市奋斗,买房总是遥遥无期,房子在中国人的概念里,有着特殊的情节,意味着家,老小妻儿生活的地方,给人一种安全感!我们可以看到还有不少城市的平均月薪也破万了,在这些相对小点的城市中挑一个,工作安家,买房还是有希望的,哈哈!譬如南京、武汉、苏州、大连、厦门都挺好的!&/p&&p&&br&&/p&&h2&5.学历-职位数量&/h2&&p&直觉来看Python这类工作职位,应该是本科及以上经验要求居多吧?那么工作经验【不限】和【大专】的机会占比多少呢?让我们来看看! 首先,还是用df['最低学历'].value_counts()来看一下有哪些字段,以及各个字段的统计值。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df['最低学历'].value_counts()
df_最低学历=df['最低学历'].replace(['中技','其他','高中','found no element'],np.nan)
df_最低学历.value_counts()
df_最低学历.value_counts().sum()
df['df_最低学历'] = df_最低学历 #留作备用
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-5a74bff15bad_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&737& data-rawheight=&571& class=&origin_image zh-lightbox-thumb& width=&737& data-original=&https://pic3.zhimg.com/50/v2-5a74bff15bad_r.jpg&&&/figure&&p&&br&&/p&&p&可以看到对于学历要求,最多的集中在大专、本科、硕士、不限还有较少量的博士和中专学历,至于中技、其他、高中则连10个都不到, 对于这些10个都不到的字段,我们还是照旧用replace语句将其排除(并没有歧视低学历的意思啊囧!)&br&可以看到排除后还剩余6个字段,共计18119个职位,下一步,还是来经典的条形分布图和饼图!&/p&&div class=&highlight&&&pre&&code class=&language-text&&fig5 = plt.figure(5)
ax5_1 = fig5.add_subplot(2,1,1) #可选facecolor='#4f4f4f',alpha=0.3
df_最低学历.value_counts().plot(kind = 'bar',rot=0)
#color='#7fc8ff'
#设置标题、x轴和y轴标题、图例文字
title = plt.title(u'最低学历——职位数分布图',fontsize = 18,color = 'yellow')
xlabel = plt.xlabel(u'最低学历',fontsize = 14,color = 'yellow')
ylabel = plt.ylabel(u'职位数量',fontsize = 14,color = 'yellow')
text1 = ax5_1.text(4.4,8200,u'职位总数:18119(条)',fontsize=14, color='#B452CD')
#设置坐标轴的的颜色和文字大小
plt.tick_params(colors='#9F79EE',labelsize=13)
#设置坐标值文字
list5 = df_最低学历.value_counts().values
for i in range(len(list5)):
ax5_1.text(i-0.1,list5[i],int(list5[i]),color='yellow')
ax5_2=fig5.add_subplot(2,1,2)
xl = df_最低学历.value_counts().values
labels = list(df_最低学历.value_counts().index)
explode = tuple([0.1,0,0,0,0,0])
plt.pie(xl,explode=explode,labels=labels,autopct='%1.1f%%',textprops={'color':'#B452CD'})
plt.axis('equal')
legend = ax5_2.legend(loc='lower right',shadow=True,fontsize=12,edgecolor='#B452CD')
plt.tick_params(colors='#9F79EE',labelsize=13)
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-0bd37c14fb15_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1279& data-rawheight=&757& class=&origin_image zh-lightbox-thumb& width=&1279& data-original=&https://pic4.zhimg.com/50/v2-0bd37c14fb15_r.jpg&&&/figure&&p&&br&&/p&&p&可见【本科】独占鳌头,占据了超过50%的市场!【不限】和【大专】也合计占比38%不容小觑!看起来,只要技术过硬,学历从来都不是问题!!!作为对比【硕士】占比6%,【博士】更是少到只有1%,果然稀缺到百里挑一!&/p&&p&&br&&/p&&h2&6.最低学历-平均月薪&/h2&&p&按道理学历越高,平均月薪越高,类似工作经验一样都是正相关,到底是不是呢?来看一下!构造一个DataFrame(df6), 包含两列最低学历和平均月薪,我们直接用之前构造好的df中的【df_最低学历】和【df_平均月薪】即可,然后还是熟悉的groupby(df_最低学历)&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&df6=pd.DataFrame(data={'最低学历':df['df_最低学历'],'平均月薪':df['df_平均月薪']})
df6.info()
grouped6 = df6['平均月薪'].groupby(df6['最低学历'])
#查看grouped6的信息
grouped6.mean()
grouped6.count()
grouped6.count().sum()
matplotlib.style.use('ggplot')
fig6 = plt.figure(6,facecolor = 'black')
ax6 = fig6.add_subplot(1,1,1,facecolor='#4f4f4f',alpha=0.3)
grouped6.mean().round(1).sort_values().plot(color = 'cyan')#在条形图上叠加一个折线图
grouped6.mean().round(1).sort_values().plot(kind='bar',rot=0)
#设置标题、x轴、y轴的标签文本
title = plt.title(u'最低学历——平均月薪分布图',fontsize = 18,color = 'yellow')
xlabel= plt.xlabel(u'最低学历',fontsize = 14,color = 'yellow')
ylabel = plt.ylabel(u'平均月薪',fontsize = 14,color = 'yellow')
#添加值标签(坐标值文字)
list6 = grouped6.mean().round(1).sort_values().values
for i in range(len(list6)):
ax6.text(i-0.1,list6[i],int(list6[i]),color='yellow')
#设置图例注释
text= ax6.text(0,27000,u'月薪样本数:16956(个)',fontsize=16, color='cyan')
#设置轴刻度的文字颜色
plt.tick_params(colors='#9F79EE')
&/code&&/pre&&/div&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-a27a392b508bae3a7c237abc1d64d695_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1300& data-rawheight=&795& class=&origin_image zh-lightbox-thumb& width=&1300& data-original=&https://pic3.zhimg.com/50/v2-a27a392b508bae3a7c237abc1d64d695_r.jpg&&&/figure&&p&平均月薪14139元,可以看到学历越高果然工资越高,博士级别的更是碾压,达到了29562元。只要学历在【大专】以上,那么平均月薪都已经过万了。 BUT,重点来了,学历并不是万能的,一个【中专】学历,有超过5年经验的,工资一定超过【本科】毕业无工作经验的。所以大家看看就好,不要当真,哈哈!&/p&&p&&br&&/p&&h2&7.最低学历-工作经验-平均月薪&/h2&&p&看了前面的图表,大家都知道了,学历越高平均月薪越高,工作经验越高平均月薪越高,但是我想要看看更细粒度的情形呢? 譬如我想知道【大学+无经验】和【大学+1-3年】工资的差别,我想看看【大专+3-5年】和【硕士+无经验】工资的对比究竟谁高? 现在,我不知道,但是接下来让我们把这些情况用图表呈现出来,大家就会一目了然!&/p&&div class=&highlight&&&pre&&code class=&language-text&&df7 = pd.DataFrame(data = {'平均月薪':df['df_平均月薪'],'最低学历':df['df_最低学历'],'工作经验':df['df_工作经验']})
df7.info()
grouped7 = df7['平均月薪'].groupby([df7['最低学历'],df7['工作经验']])
#查看grouped7的信息
grouped7.mean().round(1)
grouped7.count()
grouped7.count().sum()
&/code&&/pre&&/div&&p&&br&&/p&&p&其实我们输入type(grouped7.mean()),会发现它是一个包含了层次化索引的Series结构。其中第一层索引是【最低学历】 第二层索引是【工作经验】,数值列【平均月薪】被这两层索引所分配!下面我们开始准备可视化,还是画一个bar柱状图,不过这次画的是多列一起呈现的形式,Y轴表示职位月薪、X轴表示最低学历,在每个学历字段下,又分别添加不同工作经验的列!&/p&&div class=&highlight&&&pre&&code class=&language-text&&grouped7.mean().round(1)[:,'1-3年']
grouped7.mean().round(1)[:,'1-3年'].sort_values()
xlist = list(grouped7.mean().round(1)[:,'1-3年'].sort_values().index)
grouped7.mean().round(1)[:,'1-3年'].reindex(xlist)
print(xlist)
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-05ec88d314ac319c709f2f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&725& data-rawheight=&698& class=&origin_image zh-lightbox-thumb& width=&725& data-original=&https://pic3.zhimg.com/50/v2-05ec88d314ac319c709f2f_r.jpg&&&/figure&&p&grouped7.mean()将会显示各组的平均值,round(1)表示小数点保留1位。[:,'1-3年']是对层次化索引的一种操作,表示选取 grouped7.mean()中索引名字为'工作经验'下'1-3年字段'的所有值。此处构造了列表xlist,值是筛选后的'最低学历'索引, xlist将用于画条形图时X轴坐标的标签文本(表示最低学历),Y轴相对应的是平均月薪。工作经验则用条形图和图例展示。&/p&&div class=&highlight&&&pre&&code class=&language-text&&#开始画图,设置基本参数
matplotlib.style.use('dark_background')
fig7 = plt.figure(7,facecolor = 'black')
ax7 = fig7.add_subplot(1,1,1,facecolor='#4f4f4f',alpha=0.3)
title = plt.title(u'最低学历-工作经验-平均月薪分布图',fontsize = 18,color = 'yellow')
xlabel = plt.xlabel(u'最低学历',fontsize = 14,color = 'yellow')
ylabel = plt.ylabel(u'平均月薪',fontsize = 14,color = 'yellow')
plt.tick_params(colors='cyan')
#ylist1~7分别是7种条形图的Y值列表
ylist1 = grouped7.mean().round(1)[:,'无经验'].reindex(xlist).values
ylist2 = grouped7.mean().round(1)[:,'1年以下'].reindex(xlist).values
ylist3 = grouped7.mean().round(1)[:,'不限'].reindex(xlist).values
ylist4 = grouped7.mean().round(1)[:,'1-3年'].reindex(xlist).values
ylist5 = grouped7.mean().round(1)[:,'3-5年'].reindex(xlist).values
ylist6 = grouped7.mean().round(1)[:,'5-10年'].reindex(xlist).values
ylist7 = grouped7.mean().round(1)[:,'10年以上'].reindex(xlist).values
#img1~img7分别表示7种条形图
ind = np.arange(6)#ind为x轴宽度,用numpy的array形式表示
width = 0.1#条形图的宽度,要合理设置否则太宽会摆不下
img1 = ax7.bar(ind,ylist1,width)
img2 = ax7.bar(ind+width,ylist2,width)
img3 = ax7.bar(ind+width*2,ylist3,width)
img4 = ax7.bar(ind+width*3,ylist4,width)
img5 = ax7.bar(ind+width*4,ylist5,width)
img6 = ax7.bar(ind+width*5,ylist6,width)
img7 = ax7.bar(ind+width*6,ylist7,width)
#设置X轴文本和位置调整
ax7.set_xticklabels(xlist)
ax7.set_xticks(ind + width / 2)
#设置文字说明
text1 = ax7.text(4.05,52100,u'数据来源:智联招聘',fontsize=13, color='#9F79EE')
text2 = ax7.text(4.05,50200,u'职位关键词:Python',fontsize=13, color='#9F79EE')
text3 = ax7.text(4.05,48200,u'工作城市:全国30座城市',fontsize=13, color='#9F79EE')
text4 = ax7.text(4.05,46200,u'职位数量:共计16956(条)',fontsize=13, color='#9F79EE')
ax7.legend((img1[0],img2[0],img3[0],img4[0],img5[0],img6[0],img7[0]), (u'无经验',u'1年以下',u'不限',u'1-3年',u'3-5年',u'5-10年',u'10年以上'),fontsize=13,facecolor='black')
plt.grid(True)
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-fcc8de7c45e17d02a712_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1269& data-rawheight=&783& class=&origin_image zh-lightbox-thumb& width=&1269& data-original=&https://pic4.zhimg.com/50/v2-fcc8de7c45e17d02a712_r.jpg&&&/figure&&p&&br&&/p&&p&最后,上一张简单词云图给大家看看,用的BDP傻瓜式制作,看看就好!&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-e8e60c90a2bb211ea2ed026bda0e2a31_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1150& data-rawheight=&1032& class=&origin_image zh-lightbox-thumb& width=&1150& data-original=&https://pic1.zhimg.com/50/v2-e8e60c90a2bb211ea2ed026bda0e2a31_r.jpg&&&/figure&&p&其实展开了还可以分析的东西有不少,譬如Pandas、Matplotlib的用法,譬如更多维度的分析和两两组合! 好了,整体的先暂时分析到这,总结一下呢就是:Python+工作经验+学历+大城市 = 高薪!但是,工作经验、学历和城市其实并没那么重要, 关键要看自己的Python用的6不6,关键在于你知道自己想做什么,知道自己能做什么,知道自己做出了什么!哈哈,当你知道越来越接近这些问题的答案呢,那么我相信,薪水对你来说已经不那么重要了!(当然,高薪是必须有的!) 人生苦短,我用Python!&/p&&hr&&p&最后,插播一条小广告:&/p&&p&创建了Python、Java的专栏:&/p&&a href=&https://zhuanlan.zhihu.com/c_& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-3fab0055722ffbaaf16f7_ipico.jpg& data-image-width=&200& data-image-height=&200& class=&internal&&Java、Python和数据分析&/a&&a href=&https://zhuanlan.zhihu.com/c_& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-5ae0a5a1b8e_ipico.jpg& data-image-width=&191& data-image-height=&192& class=&internal&&Java从入门到实践&/a&&p&&br&&/p&&p&欢迎Python和Java爱好者、初学者关注,一起学习共同进步~&/p&
用Python写的第一个程序,是爬取糗事百科上的图片、自动下载到本地、自动分成文件夹保存,当时就觉得,卧糟,太NB了~第二个程序,当然还是图片爬虫,不过这次,嘿嘿,是妹纸图,你懂得~然后还跟着别人的代码或教程或者自己写过:12306火车票查询工具、携程…
&p&有条件的话,我们先看个视频(强烈建议,对解题有帮助):&/p&&a class=&video-box& href=&//link.zhihu.com/?target=https%3A//www.zhihu.com/video/818304& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic3.zhimg.com/80/v2-da9cc837e4ff0be612f6_b.jpg& data-lens-id=&818304&&
&img class=&thumbnail& src=&https://pic3.zhimg.com/80/v2-da9cc837e4ff0be612f6_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/818304&/span&
&/a&&p&没条件的话,我们就简单看个图吧:&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-d3e7f147b78db7bbb44de2b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2653& data-rawheight=&1171& class=&origin_image zh-lightbox-thumb& width=&2653& data-original=&https://pic3.zhimg.com/50/v2-d3e7f147b78db7bbb44de2b_r.jpg&&&/figure&&p&&br&&/p&&p&宇宙这个东西,是很玄幻的;&/p&&p&&b&暗物质、暗能量&/b&的概念是怎么来的呢,就是那帮科学家,经过计算,也就是你高中那些万有引力啥的,&/p&&p&发现如果只是我们看到的这些星球啥的,这个宇宙不可能hold得住,&/p&&p&所以除了我们能看到的这些星球,还有一些我们看不见的,或者说迄今发现不了的物质和能量,&/p&&p&看不见嘛,就是「暗」,科学家算了一个比例,我们现在所了解的世界,能看到的,只占4.9%,&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-f341a78d5eeb8cce619e63_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&423& class=&content_image& width=&300&&&/figure&&p&反正暗物质这些东西吧,就是&b&明知道它存在,但是还看不见&/b&,所以要研究啊!&/p&&p&&br&&/p&&p&我再说说&b&悟空&/b&是什么鬼&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-bac49efeea5c92e7d0e9f7c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&740& data-rawheight=&555& class=&origin_image zh-lightbox-thumb& width=&740& data-original=&https://pic2.zhimg.com/50/v2-bac49efeea5c92e7d0e9f7c_r.jpg&&&/figure&&p&&br&&/p&&p&它就是个专门设计用于探测暗物质的卫星,其实也没有啥直接探测的方法,&/p&&p&它选择的就是去探测宇宙高能粒子或者射线,看看有啥蛛丝马迹可以找找,&/p&&p&&br&&/p&&p&卫星呢,没啥了不起的,现在中国航天,可以论斤发射;&/p&&p&最近好像对民口开放了,好像多少钱一公斤来着,我不记得了,你们感兴趣的可以去查;&/p&&p&&br&&/p&&p&这个悟空核心和厉害之处,在于他的探测器:&/p&&p&他可以探测&b&&i&5 GeV ~ 10 TeV&/i&&/b&这个Scale的高能粒子!&/p&&p&我个人觉得这个是厉害的关键,这个&b&动态范围太大&/b&了,&/p&&p&怎么说呢,反正就是大,画图的时候都需要打Log底,&/p&&p&你还不得不在这么大范围内都有高分辨率,&/p&&p&如果你只是低能量端分辨高,高能部分就没那么精细了,那今天这个结果也就看不到的...&/p&&p&&br&&/p&&p&再说下这个文章,其实就一个图就行了:&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-eb0b4238ab_b.jpg& data-size=&normal& data-rawwidth=&1203& data-rawheight=&867& class=&origin_image zh-lightbox-thumb& width=&1203& data-original=&https://pic4.zhimg.com/50/v2-eb0b4238ab_r.jpg&&&figcaption&http://dx.doi.org/10.1038/nature24475&/figcaption&&/figure&&p&红色数据是悟空的工作,观测到了1.4TeV的高能信号,&/p&&p&当然不能直接说观测到暗物质,但是他可以给出两个推论:&/p&&p&①直接坐实了在1.4TeV有个高能信号,可能是暗物质的蛛丝马迹(可结合0.9TeV的突起一起稍微推测一下);&/p&&p&②宇宙中可能有单一的粒子能量加速机制(这么突出,肯定是单一能量嘛,不然早抹平了)&/p&&p&就算不是发现暗物质,以上无论是哪一条,在天文这些领悟,都可以站一波了~&/p&&p&&br&&/p&&p&至于实验多难, 我就不多说了:&/p&&p&&i&比如这个信号量很大,每天多少个粒子啥的,很难找,&/i&&/p&&p&&i&又或者高能粒子信号很难找,因为越是高能,传播越短,最后都耗散了,信号源少...&/i&&/p&&p&做过实验的,当然知道这种玩意坑,关键是,还只有你们坑得起,别人想坑也没机会...&/p&&p&&br&&/p&&p&为啥每次天文只要来一个突破立马就新闻刷屏,而物理化学生物那些,发多少CNS都没啥讨论度,其实我分析过的:&/p&&p&①这个看起来简单,可能更能符合大众口味(呸...我才不信呢...)&/p&&p&②毕竟大项目大科学装置,每年有科普宣传要求的...&/p&&p&③参与度太高,互相打Call...&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-6d0a253371ded4cd135e566ef48180b3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1195& data-rawheight=&858& class=&origin_image zh-lightbox-thumb& width=&1195& data-original=&https://pic2.zhimg.com/50/v2-6d0a253371ded4cd135e566ef48180b3_r.jpg&&&/figure&&p&&br&&/p&&p&另外 &a class=&member_mention& href=&//www.zhihu.com/people/da971e1f564da9a51930c4aa& data-hash=&da971e1f564da9a51930c4aa& data-hovercard=&p$b$da971e1f564da9a51930c4aa&&@中国科普博览&/a&
他的视频做的真是太好了,全程高清通俗,&/p&&p&做科普太难了,说专业了晦涩;改成面对大众的,自己都看不下去...&/p&&p&所以我迷上了开车~&/p&&p&&br&&/p&&p&&br&&/p&&p&&&&最后我澄清一下(虽然很多人都知道,但是还是为了&b&避免误会&/b&):&/p&&p&大家不要看到上面第一单位不是国内就以为是国外的,&/p&&p&高能物理、天文这些个领域...&/p&&p&先是看姓名首字母排作者顺序,&/p&&p&然后再根据作者顺序排单位...&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-7f58f76afe7a76fdbc73caa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&817& data-rawheight=&762& class=&origin_image zh-lightbox-thumb& width=&817& data-original=&https://pic3.zhimg.com/50/v2-7f58f76afe7a76fdbc73caa_r.jpg&&&/figure&&p&其实直接看通讯就好了:紫金山天文台...&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-d5cbaaa69fefbe045ab06_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&808& data-rawheight=&694& class=&origin_image zh-lightbox-thumb& width=&808& data-original=&https://pic3.zhimg.com/50/v2-d5cbaaa69fefbe045ab06_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&小馆家已分类收藏:&/p&&p&&b&&a href=&https://www.zhihu.com/collection/& class=&internal&&硬货&/a&&/b&······&b&&a href=&https://www.zhihu.com/collection/& class=&internal&&软货&/a&&/b&······&b&&a href=&https://www.zhihu.com/collection/& class=&internal&&飚车&/a&&/b&······&b&&a href=&https://www.zhihu.com/collection/& class=&internal&&观点&/a&&/b&······&b&&a href=&https://www.zhihu.com/collection/& class=&internal&&其他&/a&&/b&&/p&&p&已推出科普(pi yao)专栏 &b&&a href=&https://zhuanlan.zhihu.com/zh315& class=&internal&&『Yao(谣)』&/a&&/b&&/p&&p&欢迎热心作者投稿,欢迎感兴趣的读者关注它&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-cdd2152dac5f3a4c7295_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&247& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/50/v2-cdd2152dac5f3a4c7295_r.jpg&&&/figure&
有条件的话,我们先看个视频(强烈建议,对解题有帮助):没条件的话,我们就简单看个图吧: 宇宙这个东西,是很玄幻的;暗物质、暗能量的概念是怎么来的呢,就是那帮科学家,经过计算,也就是你高中那些万有引力啥的,发现如果只是我们看到的这些星球啥的…
&figure&&img src=&https://pic4.zhimg.com/v2-9b8c74ebbdb4cc6ba48eb27_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic4.zhimg.com/v2-9b8c74ebbdb4cc6ba48eb27_r.jpg&&&/figure&&p&&b&这个世界除了犯罪,震撼人心的还有爱情、友谊与人生!&/b&&/p&&p&&b&真实事件改编的剧情电影合集,好看到让你无法自拔,久久难忘!&/b&&/p&&p&&br&&/p&&p&&b&1.《战争之王》8.5&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-cf_b.jpg& data-caption=&& data-rawwidth=&2026& data-rawheight=&3000& class=&origin_image zh-lightbox-thumb& width=&2026& data-original=&https://pic2.zhimg.com/v2-cf_r.jpg&&&/figure&&p&这是一部从海报就开始惊艳世人的电影。&/p&&p&影片情节几乎出自真实历史,主角尤里·奥洛夫是由多个真实人物合成,有被称为“死亡商人”的维克多·布特,也有为利比亚独裁者提供武器的昂尼德·明宁。&/p&&p&《战争之王》的资金来源可以排除了所有美国背景的资本,有多个军火商都为电影拍摄提供了资金。&/p&&p&&b&尤里当然是邪恶的化生,他跟军阀、独裁者做生意,他给世界很多国家带去战乱,给许多家庭带去灾难,带去死亡!但是,他也是必须的,所以尤里被捕后立马被高层下令释放,因为这世界肮脏的事情总有人要去做,因为这世界是荒谬的是现实的。尤里的弟弟最后觉醒了,他意识到自己的生意将会给世界带来血与火,于是他不干了,他反抗,于是他为此失去了自己的生命!&/b&&/p&&p&影片中动用的数千只AK全是真枪,因为道具枪比真枪还贵。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ee367d7b7_b.jpg& data-caption=&& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic2.zhimg.com/v2-ee367d7b7_r.jpg&&&/figure&&p&&b&上图中的经典场景整排待售的坦克,片中使用的全是真实坦克,他们全部属于一个捷克籍的军火商人。拍摄该场景前,片方知会了北大西洋公约,主要是怕北约误会有军队集结。此外,拍摄完毕后,这批坦克就被卖给了利比亚。&/b&&/p&&p&最后影片结束出的字幕可以说是非常戏谑了!&/p&&figure&&img src=&https://pic2.zhimg.com/v2-44e56fd0aa72b6e0e411_b.jpg& data-caption=&& data-rawwidth=&1094& data-rawheight=&472& class=&origin_image zh-lightbox-thumb& width=&1094& data-original=&https://pic2.zhimg.com/v2-44e56fd0aa72b6e0e411_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-621f0852a85dfc928f743f_b.jpg& data-caption=&& data-rawwidth=&1099& data-rawheight=&473& class=&origin_image zh-lightbox-thumb& width=&1099& data-original=&https://pic2.zhimg.com/v2-621f0852a85dfc928f743f_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-63b5932645ebd99a59c8_b.jpg& data-caption=&& data-rawwidth=&1087& data-rawheight=&481& class=&origin_image zh-lightbox-thumb& width=&1087& data-original=&https://pic2.zhimg.com/v2-63b5932645ebd99a59c8_r.jpg&&&/figure&&p&&br&&/p&&p&&b&2.《沙漠之花》8.7&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-d3cb84f5d2da481cfa98cc_b.jpg& data-caption=&& data-rawwidth=&1280& data-rawheight=&688& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic2.zhimg.com/v2-d3cb84f5d2da481cfa98cc_r.jpg&&&/figure&&p&本片改编自索马里黑人模特华莉丝o迪里的自传。&/p&&p&华莉丝出生在索马里的沙漠,三岁时,华莉丝按照索马里习俗就被施以女性割礼。十二岁时,时一个老头子用六头骆驼换走了她。出嫁前夜华莉丝出逃投奔奔摩加迪沙的外祖母,也在外祖母那里获得了去给当时索马里驻英国大使夫人的姨妈作女佣的机会。到英国后不久,索马里内乱,大使馆倒闭,华莉丝流落英国街头,在快餐店被人发掘走上模特之路。 &/p&&p&什么是女性割礼?这是一种非洲流行的恶俗,女性割礼,在非洲等地实行的把少女的生殖器切割下来,再把伤口缝合起来,只在阴道外留一个细如火柴棍的小孔。而这一切都只是为了给男人提供验贞的方法。所以,比起中国的包小脚,对女性的残害,割礼有过之而无不及。(割礼这种恶俗在全世界很多地方都有,每个地区的形式都不一样,我了解到的非洲地区的确是割掉生殖器缝合,有的地区只是割掉阴蒂。另外我查的资料也不是十分权威,有更权威的资料的话希望指正。)&/p&&p&而非洲的女性割礼多是在是私下行为,为生条件极差,有很多少女就死于割礼大出血或是感染。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-1dd072d671c36aa2b451_b.jpg& data-caption=&& data-rawwidth=&1024& data-rawheight=&560& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic2.zhimg.com/v2-1dd072d671c36aa2b451_r.jpg&&&/figure&&p&片中的华莉丝就是在这样一个户外被割礼,用一块长满绣的刀片割掉之后,再用一根植物尖刺缝合。&/p&&p&根据联合国儿童基金估计称,目前全世界至少有1.25亿女性遭受生殖器切割。虽然人数总体呈下降趋势,但仍有3000万15岁以下女性面临严重危险。&/p&&p&&br&&/p&&p&&b&3.《荒野生存》豆瓣评分:8.6&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-aa829dab9260c8dcceda26_b.jpg& data-caption=&& data-rawwidth=&542& data-rawheight=&306& class=&origin_image zh-lightbox-thumb& width=&542& data-original=&https://pic3.zhimg.com/v2-aa829dab9260c8dcceda26_r.jpg&&&/figure&&p&电影改编自小说《荒野生存:阿拉斯加之死》,小说来源于一个真实的故事。&/p&&p&1990年来自美国东海岸富裕家庭的克里斯托弗大学毕业后放弃工作,把存款捐给慈善机构,开始了流浪之旅,慢慢回归自然。1992年,他走进阿拉斯加荒野后再也没有走出来,最后是几名猎人在一辆废弃的公车里发现了他的尸体。&/p&&p&&b&这是一部跟《爆裂鼓手》一样的电影,他们都说对理想极致的爱与追求。每个人的信仰理念都是截然不同的,为了理想所愿意付出的程度也不一样。而偏执狂在现实里会被一些人看做是疯子,所以注定这是一部会有人极其讨厌的电影。Alex是热爱自由的极端分子,即便不被人理解,也难以掩盖一个事实:他的疯狂带给他五彩斑斓的人生!&/b&&/p&&p&&b&其实,正因为我们大多数人都会在现实中归于平淡,再回首的时候才会更向往那些疯狂的追逐!而那部分有过类似极端行为的人则更加的感同身受!&/b&&/p&&p&&br&&/p&&p&&b&4.《浪潮》豆瓣评分:8.7&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-7ab51acebfe_b.jpg& data-caption=&& data-rawwidth=&424& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&424& data-original=&https://pic4.zhimg.com/v2-7ab51acebfe_r.jpg&&&/figure&&p&影片源自1967年4月美国克柏莱中学的一场试验。&/p&&blockquote&1967年,美国加州一所高中,历史教师罗恩·琼斯(Ron Jones)为了让学生们明白什么叫法西斯主义,搞了一场教学实验。他提出铿锵有力的口号,“纪律铸造力量”、“团结铸造力量”和“行动铸造力量”,用严苛的规条束缚学生,向他们灌输集体主义,要求他们绝对服从,遵守纪律。令人惊讶的是,学生们非常顺从,步调一致地投入其中。他们精神抖擞,穿上制服,做课间操,互相监督,很快凝聚成一个新的团体。他们给这个团体命名为“浪潮”,还设计了一个标志性的动作:手臂从右往左,划出一个波浪状的曲线。学生们没有意识到自己越来越像纳粹分子,他们发传单,印贴纸,拉拢新的成员。只用五天时间,这个班就由20人变成了200人。最后,琼斯在学校大礼堂召开了一次大会,放映了一部第三帝国的影片:整齐划一的制服和手势,集体狂热的崇拜和叫嚣。——豆瓣影评《致命的启蒙》&/blockquote&&p&实验结束的时候,罗恩o琼斯对他的学生说:“和德国人一样,你们也很难承认,竟然做得如此过分,你们不会愿意承认被人操纵,你们不会愿意承认,参与了这场闹剧。” &/p&&p&&b&极权主义往往不经意间就在我们心里蔓延,看不懂的不是独裁者,往往是追随者。&/b&&/p&&p&&b&世界离独裁只有五天并不是危言耸听!&/b&&/p&&p&&br&&/p&&p&&b&5.《达拉斯买家俱乐部》豆瓣评分:8.6&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c6dd7245aeebb40b60b02d163b4930d6_b.jpg& data-caption=&& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&https://pic4.zhimg.com/v2-c6dd7245aeebb40b60b02d163b4930d6_r.jpg&&&/figure&&p&本片改编自德洲电工罗恩·伍德鲁夫的故事。&/p&&p&罗恩·伍德鲁夫是一名电工,在1986年被诊断出感染AlDS病且被预言只能存活6个月,而当时美国市面只有一种治疗艾滋病却疗效甚微的药物。他偏不信邪,凭着顽强求生意志积极了解研究各种有关药物及治疗方法,开始自己调配组合药物以延续生命。1988年,罗恩在别人帮助下创立了达拉斯买家俱乐部,进口、走私未经FDA(美国食品药品监督管理局)批准的药物,并将其通过地下网络卖给美国和世界各地的HlV感染者。顶着FDA和其他有关部门的监管、阻挠和施压,达拉斯买家俱乐部的事业"蓬勃发展",引起了社会对艾滋病的关注,让大量患者在当时的条件下得到了应有的救助。而罗恩本人却无奈不敌病魔,于1992 年9月12日逝世。&/p&&p&罗恩的名言是:我就是自己的医生!&/p&&p&&b&马修·麦康纳为了演好迷恋酒精、毒品、女人还感染艾滋的罗恩减重23公斤。《达拉斯买家俱乐部》的成功离不开马修·麦康纳的出色演技,当然最终他也凭借此角拿下奥斯卡金像奖。&/b&&/p&&p&&b&《达拉斯买家俱乐部》全片其实基调略轻松,甚至还带了些诙谐。但是这却是一个十分沉重的话题,一个关于死亡与生命诉求的故事!再加上男主、男配的出彩表演,《达拉斯买家俱乐部》一点也不刻意,却十分煽动人心。&/b&&/p&&p&&br&&/p&&p&&b&6.《无人知晓》豆瓣评分:9.0&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ae85fab866b600cac9a5f7bd77e36748_b.jpg& data-caption=&& data-rawwidth=&600& data-rawheight=&382& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-ae85fab866b600cac9a5f7bd77e36748_r.jpg&&&/figure&&p&电影改编自轰动一时东京西巢鸭弃婴事件。&/p&&p&1988年,在东京西巢鸭的一个房子里,人们发现了一具腐烂的儿童尸体和三个浑身脏兮兮已饿了很多天的儿童 , 引起了很大的反响 ,被称为“西巢鸭弃婴事件”。当时刚大学毕业的是枝裕和听说了这个消息,便开始以此次事件为蓝本创作,最终在2004年拍成了电影《无人知晓》。&/p&&p&&b&看完这部电影,最多的不是流泪不是伤心也不是愤怒,而是沉默!&/b&&/p&&blockquote&&b&家中早已经没有了妈妈,生活早已经很拮据,水电早已经停了,今天吃过的泡面汤要留作明天拌饭,喜爱画画就画在水电停用通知单上,从公园偷水饮用,把摔死的妹妹埋掉......这一切,都没有人知道!&/b&&/blockquote&&p&&br&&/p&&p&&b&7.《亲爱的》豆瓣评分:8.3&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-5ff98beed01bd0fbac5010a3_b.jpg& data-caption=&& data-rawwidth=&810& data-rawheight=&456& class=&origin_image zh-lightbox-thumb& width=&810& data-original=&https://pic2.zhimg.com/v2-5ff98beed01bd0fbac5010a3_r.jpg&&&/figure&&p&电影改编自彭高峰寻子故事。&/p&&p&《亲爱的》寻子是大背景,但是更多的空间用在展现众人在寻子路上的心理变化,他们在悲恸,他们在崩溃的边缘,他们没有放弃。&/p&&p&其实就像豆瓣上的影评说的“&b&这样的电影不用好或不好评价,因为它应该存在&/b&”。庆幸它出现了,我们看到了。&/p&&p&&br&&/p&&p&&b&8.《铁拳男人》豆瓣评分:8.7&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-81c1b2dc68ff125a942a_b.jpg& data-caption=&& data-rawwidth=&690& data-rawheight=&517& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&https://pic4.zhimg.com/v2-81c1b2dc68ff125a942a_r.jpg&&&/figure&&p&电影改编自美国史上最有名的拳击手之一詹姆斯·布洛克的传奇故事

我要回帖

更多关于 告诉我去面基啥意思啊 的文章

 

随机推荐