首页 开发编程 正文

php怎么删除多张表

1、php怎么删除多张表,有哪些网站可以查看行业数据?大数据时代,这些好用还免费的行业数据查询网址,你竟然还不知道?1. 数据狗关于数据的论坛 各行各业都有论坛形式 所以需要有论坛币2. 世界-经济指标看名字就知道这个网站能看到 所有国家的...

php怎么删除多张表,有哪些网站可以查看行业数据?

大数据时代,这些好用还免费的行业数据查询网址,你竟然还不知道?

1. 数据狗

关于数据的论坛 各行各业都有

论坛形式 所以需要有论坛币

2. 世界-经济指标

看名字就知道

这个网站能看到 所有国家的经济的指标

3. 中国信通院

全免费 国家公示

4. 中国互联网络信息中心

全免费 国家公示

5. 中国判书网

全免费 国家公示

看企业以及个人是否有违法犯罪失信等信息

6. I99it中文互联网数据资讯网

不吹不黑报告写得还是没有毛病的

7. 艾媒网

这是个好网站 疯狂安利

8. 艾瑞指数

汇集多家大型互联网企业数据

共同打造的互联网行业信息情报分析系统。

9. 中国产业信息

全免费 国家公示

10. 国家统计局

全免费 国家公示

用爬虫技术能做到哪些有趣的事情?

看到这个问题必须来怒答一波~用python爬虫爬便宜机票了解一下?

喜欢旅行又怕吃土?让Python来爬取最便宜机票吧!

图源:

videoblocks.com

你喜欢旅行吗?

这个问题通常会得到一个肯定的答案,随后引出一两个有关之前冒险经历的故事。大多数人都认为旅行是体验新文化和开阔视野的好方法。但如果问题是“你喜欢搜索机票的过程吗?”也许话题就到此为止了……

可事实上,便宜的机票往往也很重要!本文将尝试构建一个网络爬虫,该爬虫对特定目的地运行并执行带有浮动日期(首选日期前后最多三天)的航班价格搜索。它会将结果保存为excel文件并发送一封包含快速统计信息的电子邮件。显然,这个爬虫的目的就是帮助我们找到最优惠的价格!

你可以在服务器上运行脚本(一个简单的Raspberry Pi就可以),每天运行一到两次。结果会以邮件形式发送,建议将excel文件存入Dropbox文件夹,以便随时随地查看。

因为爬虫以“浮动日期”进行搜索,所以它会搜索首选日期前后最多三天的航班信息。尽管该脚本一次仅运行一对目的地,但可以很容易地改写该爬虫使其每个循环运行多个目的地。最终甚至可能找到一些错误票价...那会很有意思!

另一个爬虫

某种意义上来讲,网络爬取是互联网“工作”的核心。

也许你认为这是一个十分大胆的说法,但谷歌就是从拉里·佩奇用Java和Python构建的网络爬虫开始的。爬虫不断地爬取信息,整个互联网都在试图为所有问题提供最佳的可能答案。网络爬取有不计其数的应用程序,即使更喜欢数据科学中的其他分支,你仍需要一些爬取技巧以获得数据。

这里用到的一些技术来自于最近新的一本佳作《Python网络数据采集》,书中包含与网络爬取相关的所有内容,并提供了大量简例和实例。甚至有一个特别有意思的章节,讲述如何解决验证码检验的问题。

Python的拯救

第一个挑战就是选择爬取信息的平台,本文选择了客涯(Kayak)。我们试过了Momondo, 天巡(Skyscanner), 亿客行(Expedia)和其它一些网站,但是这些网站上的验证码特别变态。

在那些“你是人类吗?”的验证中,尝试了多次选择交通灯、十字路口和自行车后,客涯似乎是最好的选择,尽管短时间内加载太多页面它会跳出安全检查。

我们设法让机器人每4到6个小时查询一次网站,结果一切正常。虽然说不定哪个部分偶尔会出点小问题,但是如果收到验证码,既可以手动解决问题后启动机器人,也可以等待几小时后的自动重启。

如果你是网络爬取新手,或者不知道为何有些网站花费很大力气阻止网络爬取,那么为构建爬虫写下第一行代码前,你一定要多加努力。

谷歌的“网络爬取规范”:

http://lmgtfy.com/?q=web+scraping+etiquette

系紧安全带...

导入并打开Chrome浏览器标签页后,会定义一些循环中会用到的函数。这个架构的构思大概是这样的:

· 一个函数用于启动机器人程序,表明想要搜索的城市和日期。

· 这个函数获得首轮搜索结果,按“最佳”航班排序,然后点击“加载更多结果”。

· 另一个函数会爬取整个页面,并返回一个dataframe数据表。

· 随后重复步骤2和步骤3,得出按“价格”和“航行时间”排序的结果。

· 发送一封简要总结价格(最低价和平均价)的邮件,并将带有这三种排序类型的dataframe数据表保存为一份excel文件。

· 以上所有步骤会在循环中重复,每X小时运行一次。

每个Selenium项目都以一个网页驱动器开始。我们使用Chromedriver驱动器,但还有其它选择。PhantomJS和Firefox也很受欢迎。下载Chromedriver后,将其置于一个文件夹中即可。第一行代码会打开一个空白Chrome标签页。

from time import sleep, strftime

from random import randint

import pandas as pd

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import smtplib

from email.mime.multipart import MIMEMultipart

# Change this to your own chromedriver path!

chromedriver_path = 'C:/{YOUR PATH HERE}/chromedriver_win32/chromedriver.exe'

driver = webdriver.Chrome(executable_path=chromedriver_path) # This will open the Chrome window

sleep(2)

这些是将用于整个项目的包。使用randint函数令机器人在每次搜索之间随机睡眠几秒钟。这对任何一个机器人来说都是必要属性。如果运行前面的代码,应该打开一个Chrome浏览器窗口,机器人会在其中导航。

一起来做一个快速测试:在另一个窗口上访问客涯网(http://kayak.com),选择往返城市和日期。选择日期时,确保选择的是“+-3天”。由于在编写代码时考虑到了结果页面,所以如果只想搜索特定日期,很可能需要做一些微小的调整。

点击搜索按钮在地址栏获取链接。它应该类似于下面所使用的链接,将变量kayak定义为url,并从网页驱动器执行get方法,搜索结果就会出现。

无论何时,只要在几分钟内使用get命令超过两到三次,就会出现验证码。实际上可以自己解决验证码,并在下一次验证出现时继续进行想要的测试。从测试来看,第一次搜索似乎一直没有问题,所以如果想运行这份代码,并让它在较长的时间间隔后运行,必须解决这个难题。你并不需要十分钟就更新一次这些价格,对吧?

每个XPath都有陷阱

到目前为止,已经打开了一个窗口,获取了一个网站。为了开始获取价格和其他信息,需要使用XPath或CSS选择器,我们选择了XPath。使用XPath导航网页可能会令人感到困惑,即使使用从inspector视图中直接使用“复制XPath”,但这不是获得所需元素的最佳方法。有时通过“复制XPath”这个方法获得的链接过于针对特定对象,以至于很快就失效了。《Python网络数据采集》一书很好地解释了使用XPath和CSS选择器导航的基础知识。

接下来,用Python选择最便宜的结果。上面代码中的红色文本是XPath选择器,在网页上任意一处右键单击选择“inspect”就可以看到它。在想要查看代码的位置,可以再次右键单击选择“inspect”。

为说明之前所观察到的从“inspector”复制路径的缺陷,请参考以下差异:

1 # This is what the copymethod would return. Right click highlighted rows on the right side and select “copy> Copy XPath”//*[@id=“wtKI-price_aTab”]/div[1]/div/div/div[1]/div/span/span

2 # This is what I used todefine the “Cheapest” buttoncheap_results= ‘//a[@data-code = “price”]’

第二种方法的简洁性清晰可见。它搜索具有data-code等于price属性的元素a。第一种方法查找id等于wtKI-price_aTab的元素,并遵循第一个div元素和另外四个div和两个span。这次……会成功的。现在就可以告诉你,id元素会在下次加载页面时更改。每次页面一加载,字母wtKI会动态改变,所以只要页面重新加载,代码就会失效。花些时间阅读XPath,保证你会有收获。

不过,使用复制的方法在不那么“复杂”的网站上工作,也是很好的!

基于以上所展示的内容,如果想在一个列表中以几个字符串的形式获得所有搜索结果该怎么办呢?其实很简单。每个结果都在一个对象中,这个对象的类是“resultWrapper”。获取所有结果可以通过像下面这样的for循环语句来实现。如果你能理解这一部分,应该可以理解接下来的大部分代码。它基本上指向想要的结果(结果包装器),使用某种方式(XPath)获得文本,并将其放置在可读对象中(首先使用flight_containers,然后使用flight_list)。

前三行已展示在图中,并且可以清楚地看到所需的内容,但是有获得信息的更优选择,需要逐一爬取每个元素。

准备起飞吧!

最容易编写的函数就是加载更多结果的函数,所以代码由此开始。为了在不触发安全验证的前提下最大化所获取的航班数量,每次页面显示后,单击“加载更多结果”。唯一的新内容就是所添加的try语句,因为有时按钮加载会出错。如果它对你也有用,只需在前面展示的start_kayak函数中进行简要注释。

# Load more results to maximize the scraping

def load_more():

try:

more_results = '//a[@class = “moreButton”]'

driver.find_element_by_xpath(more_results).click()

# Printing these notes during the program helps me quickly check what it is doing

print('sleeping…..')

sleep(randint(45,60))

except:

pass

现在,经过这么长的介绍,已经准备好定义实际爬取页面的函数。

我们编译了下一个函数page_scrape中的大部分元素。有时这些元素会返回列表插入去程信息和返程信息之间。这里使用了一个简单的办法分开它们,比如在第一个 section_a_list和section_b_list变量中,该函数还返回一个flight_df数据表。所以可以分离在不同分类下得到的结果,之后再把它们合并起来。

def page_scrape():

“““This function takes care of the scraping part”““

xp_sections = '//*[@class=“section duration”]'

sections = driver.find_elements_by_xpath(xp_sections)

sections_list = [value.text for value in sections]

section_a_list = sections_list[::2] # This is to separate the two flights

section_b_list = sections_list[1::2] # This is to separate the two flights

# if you run into a reCaptcha, you might want to do something about it

# you will know there's a problem if the lists above are empty

# this if statement lets you exit the bot or do something else

# you can add a sleep here, to let you solve the captcha and continue scraping

# i'm using a SystemExit because i want to test everything from the start

if section_a_list == []:

raise SystemExit

# I'll use the letter A for the outbound flight and B for the inbound

a_duration = []

a_section_names = []

for n in section_a_list:

# Separate the time from the cities

a_section_names.append(''.join(n.split()[2:5]))

a_duration.append(''.join(n.split()[0:2]))

b_duration = []

b_section_names = []

for n in section_b_list:

# Separate the time from the cities

b_section_names.append(''.join(n.split()[2:5]))

b_duration.append(''.join(n.split()[0:2]))

xp_dates = '//div[@class=“section date”]'

dates = driver.find_elements_by_xpath(xp_dates)

dates_list = [value.text for value in dates]

a_date_list = dates_list[::2]

b_date_list = dates_list[1::2]

# Separating the weekday from the day

a_day = [value.split()[0] for value in a_date_list]

a_weekday = [value.split()[1] for value in a_date_list]

b_day = [value.split()[0] for value in b_date_list]

b_weekday = [value.split()[1] for value in b_date_list]

# getting the prices

xp_prices = '//a[@class=“booking-link”]/span[@class=“price option-text”]'

prices = driver.find_elements_by_xpath(xp_prices)

prices_list = [price.text.replace('$','') for price in prices if price.text != '']

prices_list = list(map(int, prices_list))

# the stops are a big list with one leg on the even index and second leg on odd index

xp_stops = '//div[@class=“section stops”]/div[1]'

stops = driver.find_elements_by_xpath(xp_stops)

stops_list = [stop.text[0].replace('n','0') for stop in stops]

a_stop_list = stops_list[::2]

b_stop_list = stops_list[1::2]

xp_stops_cities = '//div[@class=“section stops”]/div[2]'

stops_cities = driver.find_elements_by_xpath(xp_stops_cities)

stops_cities_list = [stop.text for stop in stops_cities]

a_stop_name_list = stops_cities_list[::2]

b_stop_name_list = stops_cities_list[1::2]

# this part gets me the airline company and the departure and arrival times, for both legs

xp_schedule = '//div[@class=“section times”]'

schedules = driver.find_elements_by_xpath(xp_schedule)

hours_list = []

carrier_list = []

for schedule in schedules:

hours_list.append(schedule.text.split('\n')[0])

carrier_list.append(schedule.text.split('\n')[1])

# split the hours and carriers, between a and b legs

a_hours = hours_list[::2]

a_carrier = carrier_list[1::2]

b_hours = hours_list[::2]

b_carrier = carrier_list[1::2]

cols = (['Out Day', 'Out Time', 'Out Weekday', 'Out Airline', 'Out Cities', 'Out Duration', 'Out Stops', 'Out Stop Cities',

'Return Day', 'Return Time', 'Return Weekday', 'Return Airline', 'Return Cities', 'Return Duration', 'Return Stops', 'Return Stop Cities',

'Price'])

flights_df = pd.DataFrame({'Out Day': a_day,

'Out Weekday': a_weekday,

'Out Duration': a_duration,

'Out Cities': a_section_names,

'Return Day': b_day,

'Return Weekday': b_weekday,

'Return Duration': b_duration,

'Return Cities': b_section_names,

'Out Stops': a_stop_list,

'Out Stop Cities': a_stop_name_list,

'Return Stops': b_stop_list,

'Return Stop Cities': b_stop_name_list,

'Out Time': a_hours,

'Out Airline': a_carrier,

'Return Time': b_hours,

'Return Airline': b_carrier,

'Price': prices_list})[cols]

flights_df['timestamp'] = strftime(“%Y%m%d-%H%M”) # so we can know when it was scraped

return flights_df

尽量让这些名字容易理解。记住变量a表示旅行的去程信息,变量b表示旅行的返程信息。接下来说说下一个函数。

等等,还有什么吗?

截至目前,已经有了一个能加载更多结果的函数和一个能爬取其他结果的函数。本可以在此结束这篇文章,而你可以自行手动使用这些函数,并在浏览的页面上使用爬取功能。但是前文提到给自己发送邮件和一些其他信息的内容,这都包含在接下来的函数start_kayak中。

它要求填入城市名和日期,并由此打开一个kayak字符串中的地址,该字符串直接跳转到“最佳”航班结果排序页面。第一次爬取后,可以获取价格的顶部矩阵,这个矩阵将用于计算平均值和最小值,之后和客涯(Kayak)的预测结果(页面左上角)一同发送到邮件中。这是单一日期搜索时可能导致错误的原因之一,因其不包含矩阵元素。

def start_kayak(city_from, city_to, date_start, date_end):

“““City codes it's the IATA codes!

Date format YYYY-MM-DD”““

kayak = ('https://www.kayak.com/flights/' + city_from + '-' + city_to +

'/' + date_start + '-flexible/' + date_end + '-flexible?sort=bestflight_a')

driver.get(kayak)

sleep(randint(8,10))

# sometimes a popup shows up, so we can use a try statement to check it and close

try:

xp_popup_close = '//button[contains(@id,”dialog-close”) and contains(@class,”Button-No-Standard-Style close “)]'

driver.find_elements_by_xpath(xp_popup_close)[5].click()

except Exception as e:

pass

sleep(randint(60,95))

print('loading more.....')

# load_more()

print('starting first scrape.....')

df_flights_best = page_scrape()

df_flights_best['sort'] = 'best'

sleep(randint(60,80))

# Let's also get the lowest prices from the matrix on top

matrix = driver.find_elements_by_xpath('//*[contains(@id,”FlexMatrixCell”)]')

matrix_prices = [price.text.replace('$','') for price in matrix]

matrix_prices = list(map(int, matrix_prices))

matrix_min = min(matrix_prices)

matrix_avg = sum(matrix_prices)/len(matrix_prices)

print('switching to cheapest results…..')

cheap_results = '//a[@data-code = “price”]'

driver.find_element_by_xpath(cheap_results).click()

sleep(randint(60,90))

print('loading more…..')

# load_more()

print('starting second scrape…..')

df_flights_cheap = page_scrape()

df_flights_cheap['sort'] = 'cheap'

sleep(randint(60,80))

print('switching to quickest results…..')

quick_results = '//a[@data-code = “duration”]'

driver.find_element_by_xpath(quick_results).click()

sleep(randint(60,90))

print('loading more…..')

# load_more()

print('starting third scrape…..')

df_flights_fast = page_scrape()

df_flights_fast['sort'] = 'fast'

sleep(randint(60,80))

# saving a new dataframe as an excel file. the name is custom made to your cities and dates

final_df = df_flights_cheap.append(df_flights_best).append(df_flights_fast)

final_df.to_excel('search_backups//{}_flights_{}-{}_from_{}_to_{}.xlsx'.format(strftime(“%Y%m%d-%H%M”),

city_from, city_to,

date_start, date_end), index=False)

print('saved df…..')

# We can keep track of what they predict and how it actually turns out!

xp_loading = '//div[contains(@id,”advice”)]'

loading = driver.find_element_by_xpath(xp_loading).text

xp_prediction = '//span[@class=“info-text”]'

prediction = driver.find_element_by_xpath(xp_prediction).text

print(loading+'\n'+prediction)

# sometimes we get this string in the loading variable, which will conflict with the email we send later

# just change it to “Not Sure” if it happens

weird = '¯\\_(ツ)_/¯'

if loading == weird:

loading = 'Not sure'

username = 'YOUREMAIL@hotmail.com'

password = 'YOUR PASSWORD'

server = smtplib.SMTP('smtp.outlook.com', 587)

server.ehlo()

server.starttls()

server.login(username, password)

msg = ('Subject: Flight Scraper\n\n\

Cheapest Flight: {}\nAverage Price: {}\n\nRecommendation: {}\n\nEnd of message'.format(matrix_min, matrix_avg, (loading+'\n'+prediction)))

message = MIMEMultipart()

message['From'] = 'YOUREMAIL@hotmail.com'

message['to'] = 'YOUROTHEREMAIL@domain.com'

server.sendmail('YOUREMAIL@hotmail.com', 'YOUROTHEREMAIL@domain.com', msg)

print('sent email…..')

虽然没有使用Gmail账户测试发送邮件,但是可以搜索到很多的替代方法,前文提到的那本书中也有其他方法来实现这一点。如果已有一个Hotmail账户,只要替换掉个人的详细信息,它就会开始工作了。

如果想探索脚本的某一部分正在做什么,可以将脚本复制下来并在函数外使用它。这是彻底理解它的唯一方法。

利用刚才创造的一切

在这些步骤之后,还可以想出一个简单的循环来使用刚创造的函数,同时使其持续运行。完成四个“花式”提示,写下城市和日期(输入)。因为测试时不想每次都输入这些变量,需要的时候可以使用以下这个清楚的方式进行替换。

如果已经做到了这一步,恭喜你!改进还有很多,比如与Twilio集成,发送文本消息而不是邮件。也可以使用VP*或更加难懂的方式同时从多个服务器上研究搜索结果。还有就是验证码的问题,验证码会时不时地跳出来,但对此类问题还是有解决办法的。不过,能走到这里已经是有很牢固的基础了,你可以尝试添加一些额外的要素。

使用脚本运行测试的示例

留言 点赞 关注

我们一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

如何才能写出高质量的代码?

作为一名java开发工程师,对于这个问题我算是比较有感触的,所以想说说我对java开发的一些看法,纯属个人意见,不喜轻喷!

什么样的代码算是高质量代码,或者说是高质量代码的特征?

在我看来,主要就是在于可读性、易扩展两方面。

首先,我觉得最重要是要可读性高。为什么这么说呢?相信做过开发的朋友都知道,互联网公司的人员流动率还是比较高的,可能出现的情况是领导突然跟你说,你去交接一下某某某同事的工作,而交接的时候一般情况主要是业务流程、功能模块来交接,大概率不会一行一行的代码去读。如果项目正常运转,不出问题、也没有需求变更(大概率需求会变更),那就是你好我好大家好,如果出了问题或者需求变更,还是之前同事的那些模块,那就必须得去啃代码了。这个时候代码的易读性就显得非常重要了。你可以试想一下,通篇没有一句注释、一个方法几百行、if/else满天飞、方法之间参数传递全是map、sql语句各种嵌套子查询、关联查询7-8个表,当你看到这样的代码,估计心里顿时万马奔腾,怒火蹭蹭蹭的往头上涌去。所以我觉得可读性是第一要素。

其次,扩展性要好。这个也很好理解,现在是信息时代,流量为王,为了提高市场占有率,普遍需求变更频繁,2周一次发布都是正常频率。在这种频繁需求变更的情况下,如果代码的扩展性不高,每一次需求都需要大量改动代码,即耗费时间还容易出错,比如漏改某处地方而引起其他功能异常。所以开发过程中要注意代码扩展性,当然也不要去过分设计,让代码晦涩难懂。

高质量代码在开发中的意义?《计算机程序的构造和解释》一书提到代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已。如果代码是写给机器看的,那完全可以使用汇编语言或者机器语言(二进制),直接让机器执行。

所以代码一定要让人容易理解。高质量代码的好处:

好的代码读起来令人赏心悦目,比如java里的spring、mybatis等框架,读源码时常常不自觉发出惊叹,代码原来还可以这么写!

质量高意味着维护成本低,运行稳定

质量高意味着扩展性强,方便业务开发

如何去写高质量代码?

对于做java的来说,我建议去看一下《阿里巴巴Java开发手册》。

手册以 Java 开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、MySQL 数据库、工程结构、设计规约七个维度,再根据内容特征,细分成若干二级子目录。根据约束力强弱及故障敏感性,规约依次分为强制、推荐、参考三大类。对于规约条目的延伸信息中,“说明”对规约做了适当扩展和解释;“正例”提倡什么样的编码和实现方式;“反例”说明需要提防的雷区,以及真实的错误案例。 摘自《阿里巴巴 Java 开发手册》

最后推荐一下阿里巴巴代码规范扫描插件,以IDEA为例,安装如下

使用如下:

数据可视化工具有哪些?

给大家推荐一款人人可上手的可视化工具,那就是Excel,好评度五星!

全文7688字,阅读需要10分钟,赶时间的朋友先点赞收藏,方便下次学习!

为什么要推荐Excel呢?

兼容性,Excel与PPT可以实现数据同步,数据修改后能直接呈现在PPT,一劳永逸。内在:Excel有5大类常规的数据可视化表达,图表类多达13种,还可以通过自定义制作多变的数据可视化表达,满足95%的日常办公需求。

跟其他数据可视化工具对比,

①对比可视化网站工具,Excel拥有强大的数据分析(Excel函数,数据透视表等),而大多数在线工具只能输入结果,而无法运算。 ②对比R、Python等,Excel对于初学者的友好高,基本2周就能大概掌握,而这些语言太难了! ③普及率高:哪台电脑没有装Excel,你要表达你的观点也容易。

想快速掌握Excel可视化表达,先了解一下可视化的全面架构:

以下就是课件内容的例子,先给同学看一下效果:

基础图表:《王者之星★》

三维地图:《广州武汉之❤》

Excel控件:《520❤你的名字》

《进阶の图表》

《智联之薪》

接下来,我们从第一个开始撩:

E01.认识数据可视化

数据可视化就是通过图形,呈现出数据大小,占比,分布等特点,从而传递信息给大家。

下面我就用地图简单举栗子吧

腾讯位置大数据https://heat.qq.com/

地图越亮的地方代表定位次数越多的地方,这个定位跟我们人口分布一致的。

通过流量折线图比较,我们就能直观看出欢乐谷的应该是9点开门,19点闭门。

关于数据可视化,大家可以多去一些可视化网站看看,其实我们大多数人接触数据可视化应该是小学、初中、高中的地理课本。

E02.Excel的数据可视化表达

在Excel中常见可视化表达有五类,分别是REPT函数、条件格式、迷你图、Excel图表,三维地图。

点击获取Excel图表视频教程和源文件模板★★★★★N0.1 REPT函数

表达式:=REPT(text,number_times) =REPT(重复文本,重复次数)

注意重复文本要用英文状态下引用,通过具体的实例去实战吧~

01.给课程做数据条

表达式子:=REPT("|",C5)&C5

选择适合的字体很重要,一般适合展示20至100的数据

02.网站流量漏斗图

03.电影评分表

04.相亲心动指数

05.人口金字塔图

NO.2 条件格式

01.突出显示单元格规则

点击【开始】→【条件格式】即可选择相关的规则,突出显示相关的单元格。

1.查找重复值,查找班里不及格的人等等

02.最前最后的规则

利用前N项或者后N项,通过突出显示快速找到对应的数据。

例如我们可以显示数学成绩高于平均分的同学、显示各位同学最低的一门科目成绩、班里成绩最好的3位同学

03.图标集

许多小伙伴不知道这些小图标是来自条件格式,导致了误以为是图表上的。

优点:其实这些精致的小图标设置很简单,通过默认的设置就能得出来。 缺点:就是精度不高,只能表示大概。图标集分为方向、形状、标记、等级四个归类,根据归类我们日常主要分别应用在

方向:表示涨↑跌↓,一般用于数据对比

形状:一般用于分类划分的信号

标记:用于标记状态,某件事做了与否,达成目标与否

等级:表示占比划分

04.色阶

色剂可以设置双色色阶或者三色色阶。

05.半自定义规则

如果还不过瘾可以通过自定义格式来设置,整体设置也不难,所有的框和图标均可以自定义设置。

06.公式自定义条件格式

公式自定义条件格式,相对与上面的会难点,但通过简单标志有更高的灵活度。

自定义格式百分比图

2.动态考勤记录表

3.项目计划甘特图

03.迷你图

迷你图有三种形式,柱形、折线和盈亏图,它的优点是能大概表示数据状态,确定就是精准度低,图形无法表示数据真实差距。

无排版可视化的表格

经过可视化后↓

点击获取Excel图表视频教程和源文件模板★★★★★04.三维地图

武广之恋❤

本题版本要求:2016及以上,2013版本可以安装power map插件还能拯救。

点击获取Excel图表视频教程和源文件模板★★★★★

本道题可以简单拆分为:心形图形表达式+三维地图

01.第一步构建数据源

我们在百度或者一些论坛上找到心形的函数Excel表达式,然后在Excel上列出具体的数据源,这是最关键的又是最麻烦的一部分工作。就能直接下载该我精心为大家准备源文件啦!

02.打开三维地图

1.我们把标准的心形函数表达式放到三维地图上,其表达效果这样紫滴,地理曾经满分的我一下子恍然大悟,这不就是本初子午线(经度=0)与赤道(纬度=0)交界的地方嘛。

2.当我们把坐标的中心定位到广州,不就是将原来的表达式加上广州的经纬度,我马上百度了一下广州的经纬度。广州(东经113.23,北纬23.16)大小老可爱们直接在我的城市填上经纬度就OK啦↓

以广州为例↓

延伸:西经与南纬,需要把坐标写成负数。如西经113.23,南纬23.16(-113.23,-23.16)这样表达。

于是我们在茫茫的太平洋找到这个东西↓

03.添加异地坐标

在对应我的城市,和你的城市填上对应的坐标轴,可得到:

广州与武汉❤

广州与珠海❤

05.特别提醒

更改过数据源后一定要刷新数据啊!

E03.了解Excel图表的规范与应用

E03-1.参考优秀的图表借鉴样式、布局、配色等

a.echart网站

b.设计网站

c.可视化平台等:如网易数读

d.商业杂志

E03-2.一份专业商务图表具备哪些特

图表原有元素:2.主标题;5.图例;6绘图区(1.纵坐标、2.网格线、3.横坐标、4.图形)

添加元素:1.logo;3.副标题,4.单位,7.备注

E03-3.快速了解图表基础设置

E03-4.配置表格主题颜色

E03-5.系统设置整个表格主题

了解整个表格和图表的基础和规范设置后,我们马上去了解各种基础图表。

E04.玩王者荣耀,学习基础图表

学习基础图表,大家只需要吧这个《王者荣耀看板》做一遍,基本就你能掌握90%日常工作的应用,更重要你做完后会有一股成就感。

王者荣耀数据看板

王者荣耀动态看板

那我们分解一下,都是由哪些图表构成的,从这个图表就能从主标题看出是哪些图表,我们还可以通过点击图表左上方蓝色■形状,进行跳转到对应的图表联系区域。

教学部分主要采用了《经济学人》的配色风格演示,大家可以通过设置页面布局的主题,变换主题颜色。

E04-1.柱形图

01.表格开始页引导:

02.图表练习区域展示:

02.图表小结区域:

每个图表做了实践之后,我们会给大家总结主要的知识点,方便大家快速上手图表。

E04-2.条形图

条形图在王者荣耀中很常见,例如对战战绩图,血量、蓝量还有回城图都是由条形图来展示的。

03.知识点小结:

接下来的图表,就简单跟介绍一下需要注意的事项,或者一些与其他图表的不同点或共同点:

E04-3.折线图E04-4.环形/饼状图:占比分析E04-5.面积图:占比趋势分析

这个在王者中的经济占比运用的就是面积图。

03.知识点小结:

E04-6.散点图:双变量分析

03.知识点小结:

E04-7.气泡图:三变量分析

03.知识点小结:

E04-8.雷达图:多维度分析

最常见在我们的综合战力分析上,几乎每个游戏都会常常用到这种的对比。

03.知识点小结:

以前的案例示范:

E04-9.树状图:分级占比分析E04-10.旭日图:分级占比分析E04-10.直方图:区间分布分析

直方图更像简化版的正态分布图,它经常用于统计数值区间的分布,例如年龄段的人数、收入水平、工资收入分布等。

E04-12.瀑布图E04-13.组合图

E04.最后一招,数字放大法!

最后,我们把上面的所有图表拼合在一起,可得:

把我们所学的图表,一一放进去,可得到:

暂时补充到这里,如果想看动态图表的,请留言,我抽空补充一下这方面的知识。

私信回复:基础图表,即可获得一份基础图表的源文件❤

有哪些堪称神器的工具或软件?

1.10万+精品模板,终生会员39元的PPT模板网:办公资源网;39元=终生VIP会员=无限下载=10万优质ppt模板+word模板+excel模板+音效模板+在线抠图+ps教程+pr教程+vba教程+课件下载

其他模板网站:hippter=pptmall+pptfans+稿定ppt+51ppt+雷锋ppt+优品ppt+ppt宝藏+站长素材+...........=模板+字体+配色+设计+大神+工具+......

(只要你知道这个网站,模板的问题一定不是问题)

2.一键生成N(7000个以内)个文件的目录,清华大学选择的文件管理软件:Taglyst

3.同时打开N个文件夹,实现浏览器式的管理,效率不止翻倍的软件:XYplorer

4.文件搜索:Filelocator,也可配合everything使用,如果必须二选一,选前者(更多搜索软件正在测试对比)

5.办公软件建议用WPS或永中office,但模板不要购买,在上面第1条下载。

6.用EXCEL时下载方方格子工具,不会函数不会公式依然可以成为数据高手。复杂的操作一键完成。

7.截图:专业截图王>Snipaste>Fastone Capture(别说什么最好的截图软件是snipaste,用过专业截图王再说)

8.PDF编辑软件:迅捷PDF(屌丝选这个)>福昕pdf(土豪选这个)>ADOBE acrobat dc;福昕是真好用,就是贵。迅捷的优势是一次付费终生使用。wps据说也很好用,测试后给大家分享。

9.批量文件重命名、替换、添加序号:total commander。批量复杂重命名1万个文件,不到1分钟就可完成。

10.批量对mp3进行标签清除或编辑:Mp3tag。彻底一键清除烦人的广告信息。

11.word批量设置格式、插入文字、批量排版、批量删除页眉页脚、批量删除页眉下划线、批量打印、批量替换文字:word文档批量处理大师>total commander,以前需要几个小时的复杂操作一键完成。

12.效率软件:essentialpim pro,让一切更加井井有条,打造私人资源库。

以下为手机端APP:

13.以一敌百的效率app:时光序=日程+日历+习惯+专注+提醒+日记+.......让生活变得更加酷炫和高效的软件,关键是还超级便宜

14.让你瞬间知识量爆棚的软件(有的家长用来启蒙孩子的兴趣):全世界=历史+地理+文化+哲学+科学+美术+艺术+心理+哲学+时政+新闻+考古..........

15.手机里的超级效率工具:全能扫描君=文字扫描+表格扫描+批量扫描+手写扫描+老照片修复+pdf工具+拍照搜题+拍照翻译+不断更新;而且终生会员我才花了60,现在涨价到90多了,需要的赶紧。

(需要更多,请看我的合集和其他回答)

现在依次介绍上面的效率工具和软件:

1.10万+精品模板,终生会员39元的PPT模板网:办公资源网;39元=终生VIP会员=无限下载=10万优质ppt模板+word模板+excel模板+音效模板+在线抠图+ps教程+pr教程+vba教程+课件下载

其他模板网站:hippter=pptmall+pptfans+稿定ppt+51ppt+雷锋ppt+优品ppt+ppt宝藏+站长素材+...........=模板+字体+配色+设计+大神+工具+......

(只要你知道这个网站,模板的问题一定不是问题)

2.一键生成N(7000个以内)个文件的目录,清华大学选择的文件管理软件:Taglyst

下图为黑色酷炫模式:

清华大学的选择:

3.同时打开N个文件夹,实现浏览器式的管理,效率不止翻倍的软件:XYplorer

4.文件搜索:Filelocator,也可配合everything使用,如果必须二选一,选前者(更多搜索软件正在测试对比)

5.办公软件建议用WPS或永中office,但模板不要购买,在上面第1条下载。

6.用EXCEL时下载方方格子工具,不会函数不会公式依然可以成为数据高手。复杂的操作一键完成。

7.截图:专业截图王>Snipaste>Fastone Capture(别说什么最好的截图软件是snipaste,用过专业截图王再说)

下图为Snipaste,只能说界面真的很寒酸。

下图为faststone capture :同样不够完美。

8.PDF编辑软件:迅捷PDF(屌丝选这个)>福昕pdf(土豪选这个)>ADOBE acrobat dc;福昕是真好用,就是贵。迅捷的优势是一次付费终生使用。wps据说也很好用,测试后给大家分享。

下图为迅捷pdf:

最大的优点是便宜:终生会员价格不足100元,秒杀Adobe公司的软件和福昕编辑器。

9.批量文件重命名、替换、添加序号:total commander。批量复杂重命名1万个文件,不到1分钟就可完成。

10.批量对mp3进行标签清除或编辑:Mp3tag。彻底一键清除烦人的广告信息。

11.word批量设置格式、插入文字、批量排版、批量删除页眉页脚、批量删除页眉下划线、批量打印、批量替换文字:word文档批量处理大师>total commander,以前需要几个小时的复杂操作一键完成。

12.效率软件:essentialpim pro,让一切更加井井有条,打造私人资源库。

以下为手机端APP:

13.以一敌百的效率app:时光序=日程+日历+习惯+专注+提醒+日记+.......让生活变得更加酷炫和高效的软件,关键是还超级便宜

14.让你瞬间知识量爆棚的软件(有的家长用来启蒙孩子的兴趣):全世界=历史+地理+文化+哲学+科学+美术+艺术+心理+哲学+时政+新闻+考古..........

15.手机里的超级效率工具:全能扫描君=文字扫描+表格扫描+批量扫描+手写扫描+老照片修复+pdf工具+拍照搜题+拍照翻译+不断更新;而且终生会员我才花了60,现在涨价到90多了,需要的赶紧。

更多录屏、办公、设计、学习、读书、日程软件......

请看我的视频合集或问答。

拉轰读书,一站式解决你的所有问题=质量超好+价格超便宜+持续更新迭代

你的关注,是最大的肯定,怎能辜负你的信任。

本文转载自互联网,如有侵权,联系删除