零基础学 Python(2023 版)
尹会生
太乙人工智能技术合伙人 & 项目总监
60050 人已学习
新⼈⾸单¥68
课程目录
已完结/共 124 讲
结束语 & 结课测试 (2讲)
零基础学 Python(2023 版)
登录|注册
留言
7
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 87|理论盘点:数据分析的流程及对应的 Python 库
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程介绍:这次我们都做了哪些升级?
内容综述:明确学习目的
01|如何配置 Python 开发环境?
02 | 常用 IDE:如何提高开发效率?
03 | 如何站在官方文档的肩膀上自己“造轮子”?
04 | 怎样运行你的第一行代码?
05 | 怎样使用 Gitee 管理你的代码?
06 | 学习编程有问题?去这里找答案!
07|跨越门槛:Python 开发环境总结及实现原理
08 | 修炼基本功:浅析输入输出
09 | 变量:如何让计算机临时存储数据?
10|字符串(上):Python 是如何处理单词的?
11|字符串(下):Python 是如何处理单词的?
12|存储数字应该采用哪种数据类型?
13|何时使用数,何时使用字符串?
14|注释:如何写程序的说明书?
15|小试牛刀:如何制作简单计算器?
16|变量命名规范:如何编写优雅的程序?
17|告别新手村:Python 编程基础知识
18|内置数据类型包括哪几种?
19|列表如何处理同类数据?
20|常见常新:列表的常见操作
21|元组:如何处理一次性数据?
22|常见常新:集合的常见操作
23|字典:如何处理映射类型的数据?
24|常见常新:字典的常见操作(上)
25|常见常新:字典的常见操作(下)
26|小试牛刀:如何利用类型转换实现手机通讯录?(上)
27|小试牛刀:如何利用类型转换实现手机通讯录?(下)
28|常见的内置数据类型都何时使用?
29|避坑指南:内置数据类型的常见错误
30|内置数据类型参考:如何使用官方文档与帮助?
31|再回首:“内置数据类型”单元小结
32|if 语句:数据流程出现分支时,怎样编写程序?
33|match 语句:如何通过 match 关键字来处理程序的分支逻辑?
34|while 循环:需要多次重复执行某段程序时,怎么做?
35|for 循环:如何遍历一个对象里的所有元素?
36|语句嵌套:如何处理多重循环的问题?
37|小试牛刀:如何设计一个飞机大战的程序?
38|避坑指南:判断和循环中的常见错误
39|再回首:“判断循环”单元小结
40|输入:如何接收用户通过键盘输入的数据?
41|格式化输出:如何将执行结果通过屏幕输出?
42|F-strings:如何通过定义好的格式进行输出?
43 | 常见常新:文件的打开
44|文件编码:如何解决不同操作系统的文件乱码问题?
45|常见常新:文件的读写
46|常见常新:文件的关闭
47|小试牛刀:如何使用 Python 合并多个文件?
48|再回首:“输入输出与文件操作”单元小结
49|函数的定义:如何优雅地反复引用同一段代码?
50|函数的参数:怎样实现函数与外部数据通信?
51|函数的参数:当函数操作对象不固定时怎么处理?
52|函数的返回值:如何得到函数的执行结果?
53|小试牛刀:如何利用函数实现电商购物车功能?
54|避坑指南:列表作为参数传递出错了怎么办?
55|高阶函数:函数对象与函数调用的用法区别
56|装饰器:函数嵌套的定义与调用的区别
57|再回首:“函数”单元小结
58|编程思想不同会导致怎样的代码差异?
59|类与实例:如何使用面向对象的思想编写程序?
60|类的继承:如何解决代码重用的问题?
61|类的装饰器:如何改变类方法的功能?
62|小试牛刀:如何开发自动咖啡机?
63|避坑指南:类的常见错误
64|init 方法:如何为对象传递参数?
65|再回首:“类”单元小结
66 | 模块的导入:如何使用其他人编写好的代码功能?
67 | 标准库:Python 默认提供的便捷功能有哪些?
68 | 自定义模块:如何编写一个完整功能?
69 | 第三方模块的使用:如何使用其他人编写的代码?
70 | 小试牛刀:如何使用 Python 为函数求导?
71|再回首:“模块与标准库”单元小结
72|初识异常:异常的产生与分类
73|异常捕获:出现异常时,如何利用程序进行处理?
74|自定义异常捕获:如何定义业务异常?
75|避坑指南:编写捕获异常程序时经常出现的问题
76|再回首:“异常处理”单元小结
77|扩展数据类型:怎样使用更复杂的数据类型?
78|魔术方法:怎样通过类构造自己需要的数据类型?
79|怎样将 Python 和 C++ 结合起来混合编程?
80|怎样将已有算法改造成符合项目的特定算法?
81|设计模式:怎样合理组合多个函数和类?
82|Redis 数据库:怎样使用 NoSQL 数据库?
83|关系型数据库:怎样使用关系型数据库?
84|计算资源充足时,如何通过并行设计提高效率?
85|多进程间如何通信?
86|再回首:“高级数据类型与算法”单元小结
87|理论盘点:数据分析的流程及对应的 Python 库
88|理论盘点:数据采集的方法与 HTTP 协议
89|理论盘点:任务的并行执行原理
90|理论盘点:非规范化数据处理的基础与正则表达式
91|如何获取网页上的数据并存储到文件?
92|小试牛刀:如何将数据进行图形化展示?
93|再回首:“数据分析”单元小结
94|理论盘点:文件类型与对应的 Python 函数库
95|如何批量读取 Excel 文件?
96|如何实现数据的批量格式转换?
97|如何扩展数据类型?
98|再回首:“办公自动化”单元小结
99|理论盘点:Web 客户端与服务端
100|理论盘点:MVC 模型是什么?
101|如何使用Django搭建简单的Web服务器?
102|如何使用Django-admin实现文章上传?
103|如何使用Django实现文章发布?
104|再回首:“Web开发”单元小结
105|理论盘点:人脸识别的一般步骤
106|理论盘点:人脸识别常用的 Python 库有哪些?
107|怎样通过 OpenCV 采集视频信号?
108|如何训练人脸模型?
109|怎样设计人脸识别系统?
110|再回首:“计算机视觉”单元小结
111|聚焦异同:物联网与互联网有啥不一样?
112|理论盘点:基础但不简单的 TCP 协议
113|理论盘点:物模型与模组
114|如何为 ESP32 安装 MicroPython?
115|怎样通过 MQTT 协议构建消息队列?
116|小试牛刀:在 OLED 屏幕和手机远程同时显示室内温度
117|再回首:“物联网”单元小结
118|结束语:人生苦短,我用Pyhon
结课测试|来赴一场满分之约吧!
直播加餐|与AI共同编程,用ChatGPT学Python
直播加餐|用OpenAI API理解Python数据类型
直播加餐|掌握Gradio框架:为 AI Agent 程序定制界面
本节摘要

课后习题
请你根据你所在地区的气温、天气,使用 Excel 工具绘制一张天气和气温变化图表。

课程代码、课件及其他相关资料地址
https://gitee.com/wilsonyin/zero-basics-python

登录 后留言

全部留言(7)

  • 最新
  • 精选
Geek_631607
import requests from bs4 import BeautifulSoup import pandas as pd import matplotlib.pyplot as plt # 抓取深圳的天气情况 url = "http://www.weather.com.cn/weather/101280601.shtml" response = requests.get(url) response.encoding = 'UTF-8' # print(response) soup = BeautifulSoup(response.text, 'html.parser') # print(soup) # 解析网页,获取日期、最高温度和最低温度 dates = [item.get_text() for item in soup.select('.t li h1')] dates = [item.get_text() for item in soup.select('.t li h1')] high_temps = [int(item.get_text().replace('℃', '')) for item in soup.select('.t li .tem span')] low_temps = [int(item.get_text().replace('℃', '')) for item in soup.select('.t li .tem i')] # 将数据保存到 DataFrame 中 df = pd.DataFrame({ 'date': dates, 'high_temp': high_temps, 'low_temp': low_temps }) # 将 DataFrame 保存到 CSV 文件中 df.to_csv('shenzhen_weather.csv', index=False) # 从 CSV 文件中读取 DataFrame df = pd.read_csv('shenzhen_weather.csv') # 绘制最高温度和最低温度的折线图 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] plt.plot(df['date'], df['high_temp'], label='High Temperature') plt.plot(df['date'], df['low_temp'], label='Low Temperature') plt.xlabel('Date') plt.ylabel('Temperature (℃)') plt.title('Shenzhen Weather') plt.legend() plt.show()
2023-12-11
1
Geek_Mike
# 请你根据你所在地区的气温、天气,使用 Excel 工具绘制一张天气和气温变化图表 import requests, pandas, matplotlib.pyplot # 数据采集 def get_data(): url = 'https://api.openweathermap.org/data/2.5/weather?q=YOUR_CITY,uk&appid=YOUR_API_KEY' response = requests.get(url) if response.status_code == 200: data = response.json() return data else: print('访问异常,异常状态码:' + requests.status_codes) return None # 数据挖掘 def save_data(data): if get_data(): df = pandas.DataFrame(data['weather'][0]) df['main'] = data['maiin'] df['dt_txt'] = data['dt_txt'] df['data'] = pandas.to_datetime(df['dt_txt']) grouped = df.groupby('data')['temp'].mean() return grouped else: print('数据存储失败,请检查数据采集') return None # 数据可视化 def show_data(grouped): matplotlib.pyplot.plot(grouped.index, grouped.values) matplotlib.pyplot.xlabel('Date') matplotlib.pyplot.ylabel('Average Temperature') matplotlib.pyplot.show()
2023-09-05
1
Cy23
一顿借鉴组装,实现了,抓取网页天气情况,保存到CSV中,读取CSV到df,图标展示双折线图显示最低与最高温度 import requests from bs4 import BeautifulSoup import csv import pandas as pd import matplotlib.pyplot as plt url = 'https://www.tianqi.com/shenyang/30/' def getHTMLtext(url): """请求获得网页内容""" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"} try: r = requests.get(url, timeout = 30, headers = headers) r.raise_for_status() r.encoding = r.apparent_encoding print("成功访问") return r.text except: print("访问错误") return" " def get_content(html): """处理得到有用信息保存数据文件""" final = [] bs = BeautifulSoup(html, "html.parser") body = bs.body ul = body.find('ul', {'class': 'weaul'}) li = ul.find_all('li') i = 0 for day in li: if i < 30 and i > 0: temp = [] date = day.find(attrs={'class':'fl'}).string temp.append(date) inf = day.find_all(attrs={'class':'weaul_z'}) temp.append(inf[0].string) tem = inf[1].find_all('span') tem_low = tem[0].string tem_high = tem[1].string temp.append(tem_low) temp.append(tem_high) final.append(temp) i = i + 1 return final if __name__ == '__main__': html_text = getHTMLtext(url) data = get_content(html_text) header =[['日期','天气','最低温度','最高温度']] with open('weather.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerows(header) writer.writerows(data) df = pd.read_csv("weather.csv", encoding='gbk') x = df["日期"] y1 = df["最低温度"] y2 = df["最高温度"] # 中文乱码 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False # 绘制折线图 plt.plot(x, y1) plt.plot(x, y2) plt.title("本市近30天温度情况") plt.show()
2023-01-30
1
1
醉后不知天在水
抄作业改了下:) import requests from bs4 import BeautifulSoup import csv import pandas as pd import matplotlib.pyplot as plt url = 'https://www.tianqi.com/shenyang/30/' def getHTMLtext(url): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36" } try: r = requests.get(url, timeout=30, headers=headers) r.raise_for_status() r.encoding = r.apparent_encoding print("成功访问") return r.text except Exception as e: print(f"访问错误, 错误原因:{e}") return -1 def get_content(html): final = [] body = BeautifulSoup(html, "html.parser").body ul = body.find('ul', {'class': 'weaul'}) li = ul.find_all('li') i = 0 for day in li: if i < 30 and i > 0: temp = [] date = day.find(attrs={'class': 'fl'}).string temp.append(date) inf = day.find_all(attrs={'class': 'weaul_z'}) temp.append(inf[0].string) tem = inf[1].find_all('span') tem_low = tem[0].string tem_high = tem[1].string temp.append(tem_low) temp.append(tem_high) final.append(temp) i = i + 1 return final if __name__ == '__main__': html_text = getHTMLtext(url) data = get_content(html_text) header = ['日期', '天气', '最低温度', '最高温度'] with open('weather.csv', 'w',newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(header) writer.writerows(data) df = pd.read_csv("weather.csv",encoding="utf-8") x = df["日期"] y1 = df["最低温度"] y2 = df["最高温度"] plt.figure(figsize=(10, 6)) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.plot(x, y1) plt.plot(x, y2) plt.title("本市近30天温度情况") plt.xticks(rotation=45) plt.show()
2023-11-15
Greenery
# %% 包导入和全局设置 import pandas as pd import requests from bs4 import BeautifulSoup from matplotlib import pyplot as plt # 解决中文问题 plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决负号显示问题 plt.rcParams['axes.unicode_minus'] = False # %% 数据爬取 def get_data(): """请求访问网页""" url = 'https://www.tianqi.com/ningbo/10/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183'} resp = requests.get(url, headers=headers) """读取并返回网页内容""" html = resp.content.decode('utf-8') soup = BeautifulSoup(html, 'html.parser') """查找网页中需要的天气数据""" ul = soup.body.find('ul', {'class': 'weaul'}) li_list = ul.find_all("li") dates, conditions, temp = [], [], [] for data in li_list: sub_data = data.text.split() print(sub_data) dates.append(sub_data[0]) conditions.append(sub_data[2]) temp.append(sub_data[3]) df = pd.DataFrame() df['日期'] = dates df['天气状况'] = conditions df['温度'] = temp return df weather = get_data() weather.to_csv("宁波天气(10天).csv", index=False, encoding='utf-8', ) # %% 数据处理 data = pd.read_csv("宁波天气(10天).csv") temps = data['温度'].str.split('~', expand=True) data['最低温度'] = temps[0] data['最高温度'] = temps[1].map(lambda x: int(x.replace('℃', ''))) print(data) # %% 数据可视化 dates = data['日期'] lows = data['最低温度'] highs = data['最高温度'] # 根据数据绘制图形 fig = plt.figure(dpi=128, figsize=(10, 6)) plt.plot(dates, lows, c='red', alpha=0.5) plt.plot(dates, highs, c='green', alpha=0.5) plt.title('宁波天气(10天)', fontsize=24) plt.xlabel('日期', fontsize=12) fig.autofmt_xdate() # 绘制斜的日期标签,以防重叠 plt.ylabel('温度', fontsize=12) plt.tick_params(axis='both', which='major', labelsize=10) plt.xticks(dates[::20]) plt.show()
2023-07-25
江江儿嘛哩哄
"""爬取数据""" import pandas as pd import requests from bs4 import BeautifulSoup from matplotlib import pyplot as plt # 解决中文问题 plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决负号显示问题 plt.rcParams['axes.unicode_minus'] = False def get_data(): """请求访问网页""" url = 'https://www.tianqi.com/hangzhou/10/' headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'} resp = requests.get(url, headers=headers) """读取并返回网页内容""" html = resp.content.decode('utf-8') soup = BeautifulSoup(html, 'html.parser') """查找网页中需要的天气数据""" ul = soup.body.find('ul', {'class': 'weaul'}) li_list = ul.find_all("li") dates, conditions, temp = [], [], [] for data in li_list: sub_data = data.text.split() print(sub_data) dates.append(sub_data[0]) conditions.append(sub_data[2]) temp.append(sub_data[3]) df = pd.DataFrame() df['日期'] = dates df['天气状况'] = conditions df['温度'] = temp return df weather = get_data() weather.to_csv('杭州天气预报(10天).csv', index=False, encoding='utf-8') """数据可视化""" data = pd.read_csv('杭州天气预报(10天).csv') data['最低温度'] = data['温度'].str.split('~', expand=True)[0] data['最高温度'] = data['温度'].str.split('~', expand=True)[1] data['最高温度'] = data['最高温度'].map(lambda x: int(x.replace('℃', ''))) print(data) dates = data['日期'] lows = data['最低温度'] highs = data['最高温度'] # 根据数据绘制图形 fig = plt.figure(dpi=128, figsize=(10, 6)) plt.plot(dates, lows, c='red', alpha=0.5) plt.plot(dates, highs, c='green', alpha=0.5) plt.title('杭州天气预报(10天)', fontsize=24) plt.xlabel('日期', fontsize=12) fig.autofmt_xdate() # 绘制斜的日期标签,以防重叠 plt.ylabel('温度', fontsize=12) plt.tick_params(axis='both', which='major', labelsize=10) plt.xticks(dates[::20]) plt.show()
2023-03-12
Matthew
from openpyxl import Workbook from openpyxl.chart import ( ScatterChart, Reference, Series, LineChart, ) wb = Workbook() # grab the active worksheet ws = wb.active # 写入标题行 title = ["日期", "天气", "最高温度", "最低温度", "风级"] ws.append(title) # 写入数据 data = [ ['19日(今天)', '晴', 11, -1, '<3级'], ['20日(明天)', '多云', 7, 0, '3-4级'], ['21日(后天)', '阴转小雨', 10, 1, '4-5级转3-4级'], ['22日(周日)', '小雨转阴', 8, 4, '4-5级转<3级'], ['23日(周一)', '多云', 9, -2, '<3级转3-4级'], ['24日(周二)', '多云', 1, -6, '3-4级转<3级'], ['25日(周三)', '多云', 4, -5, '<3级'] ] for i in data: ws.append(i) # 画图 # chart = ScatterChart() # chart.title = "未来7天气温" # chart.style = 13 # chart.x_axis.title = '日期' # chart.y_axis.title = '温度' # xvalues = Reference(ws, min_col=1, min_row=2, max_row=8) # for i in range(3, 5): # values = Reference(ws, min_col=i, min_row=1, max_row=8) # series = Series(values, xvalues, title_from_data=True) # chart.series.append(series) # 画图 chart = LineChart() # 折线图 # x 坐标的数据,通常用一列数据作为,这里选择第一列 x_data=Reference(ws, min_col=1,min_row=2, max_col=1,max_row=ws.max_row ) # 数据收集,选择第3,4列作为数据画图 data=Reference(ws, min_col=3, min_row=1, max_col=4, max_row=ws.max_row,) # --------------------------------------------------- chart.add_data(data,from_rows=False,titles_from_data=True) # from_rows:如果是True表示将一行的数据作为一个条线,如果是False表示按列画 # titles_from_data:如果是True,表示每一组(根据from_rows确定是每一行还是每一列)数据的第一个作为title # -------------------------------------------------------------------------------- chart.set_categories(x_data) # 设置横坐标 chart.y_axis.title = '温度' # 设置y轴的名字 chart.x_axis.title = '日期' # 设置x轴的名字 chart.title='天气情况' ws.add_chart(chart, "A11") # Save the file wb.save("sample.xlsx")
2023-01-20
收起评论