2022年3月28日 星期一

chenhsichuan homework

 第2章威力彩 投影片指令

import requests
from bs4 import BeautifulSoup
url = 'https://www.taiwanlottery.com.tw/'
r = requests.get(url)
sp = BeautifulSoup(r.text, 'lxml')
# 找到威力彩的區塊
datas = sp.find('div', class_='contents_box02')
# 開獎期數
title = datas.find('span', 'font_black15').text
print('威力彩期數:', title)
# 開獎號碼
nums = datas.find_all('div', class_='ball_tx ball_green')
# 開出順序
print('開出順序:', end=' ')
for i in range(0,6):
    print(nums[i].text, end=' ')
# 大小順序
print('\n大小順序:', end=' ')
for i in range(6,12):
    print(nums[i].text, end=' ')
# 第二區
num = datas.find('div', class_='ball_red').text
print('\n第二區:', num)
 
 
1. pandas的DataFrame介紹
 
2. DataFrame的使用
 
 
3. 資料視覺化必懂的Pandas套件繪製Matplotlib分析圖表實戰
read_csv('中文檔名',engine='python',encoding='utf-8')
否則中文檔名會出錯
 
4. 把資料pandas_dataframe練習用資料.csv讀出來並使用jupyter notebook繪製所有同學成績並解決中文問題TaipeiSansTCBeta-Regular.ttf, 這兩個檔案要與程式放在同一個目錄下
%matplotlib
import pandas as pd
import matplotlib.font_manager as fm
import sys
myfont = fm.FontProperties(fname=r'.\TaipeiSansTCBeta-Regular.ttf')
# 讀入資料集檔案
sys.getdefaultencoding()#‘utf-8’;新增支援中文的編碼
#使用open與encoding='utf-8'可讀取中文檔名
df = pd.read_csv(open('.\pandas_dataframe練習用資料.csv',encoding='utf-8'))
#指定姓名欄當成index欄位, 也就是圖中的X軸
df.set_index('姓名',inplace=True)
print(df)
import matplotlib.pyplot as plt
ax=df.plot(kind='bar', fontsize=5,figsize=(20,4))
plt.legend(prop=myfont)
plt.title('學期成績',fontproperties=myfont)
for label in ax.get_xticklabels():
    label.set_fontproperties(myfont)
plt.show()
 
 
5. Pandas的資料存取
 
 
6. 檔案的讀取寫入
fp=open("test.txt","w",encoding="utf8")
fp.write(r.text)#寫入資料
print("寫入檔案text.txt")
fp.close()
--------
fp=open("test.txt","r",encoding="utf8")
str=fp.read()#讀取資料
print("檔案內容text.txt:")
print(str)
fp.close()
----------
#另外一種讀取資料方法
with open("test.txt", "r", encoding="utf8") as fp:
    str=fp.read() #一次讀取全部內容
    print(str)
------
#另外一種讀取資料方法2
with open("test.txt", "r", encoding="utf8") as fp:
    list1=fp.readlines()#一次讀取所有列
    for line in list1:#針對每列以迴圈讀取
        print(line, end="")
 
 
 
#讀取統聯客運三排座票價 https://www.ubus.com.tw/Booking/FareInquiry
 
import pandas as pd
bus_table = pd.read_html("https://www.ubus.com.tw/Booking/FareInquiry")
bus_df = bus_table[0]  #讀取第一個表格國道路線
print(bus_df)
-------------
#如果要將pandas的dataframe(類似excel表格)資料存成csv, 可以使用dataframe.to_csv(), 最好使用with可以自動關閉檔案, 加上encoding='utf-8-sig'可以解決中文亂碼問題。
with open("thefile.csv", "w",encoding='utf-8-sig') as f:
    bus_df.to_csv(f)