者:YJ
轉(zhuǎn)發(fā)鏈接:https://mp.weixin.qq.com/s/_JFheujWvvB6ffsVQgLMOA
月4日凌晨零點(diǎn)起,騰訊游戲官方發(fā)布將把騰訊旗下所有娛樂游戲停服一天,以警示玩家深記抗疫戰(zhàn)士的偉大付出和抗疫歷史。
為了哀悼英雄們,不僅游戲被官方停服,新聞資訊的所有界面都被黑白色取代,我們?yōu)樗离y者哀悼時候,都會把網(wǎng)站調(diào)到灰色,如何快速實(shí)現(xiàn)呢,以下介紹兩種方法(切圖網(wǎng)用的第一種)
方法一 :
html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);-webkit-filter: grayscale(100%);}
方法二:
在引人的頁面導(dǎo)入grayscale.js文件,例如
<script type="text/javascript" src="js/grayscale.js"></script>
然后
<script type="text/javascript">
window.onload = function(){
grayscale(document.html);
}
</script>
grayscale.js下載地址
https://gitee.com/qietuwang/codes/u08qiecfk3s5ngjxwzr9p12
本人在IETester工具下,測試IE7/8/9均支持,IE6不支持,XP系統(tǒng)真實(shí)IE6環(huán)境下沒測試過!
采用webkit的Chrome支持(需要Chrome 18.0.976版本以上),其他采用webkit引擎的瀏覽器沒測試過,只要采用最新webkit nightly版本均支持
者:Roman Orac
魚羊 編譯整理
量子位 報(bào)道 | 公眾號 QbitAI
數(shù)據(jù)分析,如何能錯過 Pandas 。
現(xiàn)在,數(shù)據(jù)科學(xué)家 Roman Orac 分享了他在工作中相見恨晚的 Pandas 使用技巧。
了解了這些技巧,能讓你在學(xué)習(xí)、使用 Pandas 的時候更加高效。
話不多說,一起學(xué)習(xí)一下~
用 Pandas 做數(shù)據(jù)分析,最大的亮點(diǎn)當(dāng)屬 DataFrame。不過,在展示成果的時候,常常需要把 DataFrame 轉(zhuǎn)成另一種格式。
Pandas 在這一點(diǎn)上其實(shí)十分友好,只需添加一行代碼。
DataFrame 轉(zhuǎn) HTML
如果你需要用 HTML 發(fā)送自動報(bào)告,那么 to_html 函數(shù)了解一下。
比如,我們先設(shè)定這樣一個 DataFrame:
import numpy as np
import pandas as pd
import random
n = 10
df = pd.DataFrame(
{
"col1": np.random.random_sample(n),
"col2": np.random.random_sample(n),
"col3": [[random.randint(0, 10) for _ in range(random.randint(3, 5))] for _ in range(n)],
}
)
用上 to_html,就可以將表格轉(zhuǎn)入 html 文件:
df_html = df.to_html()
with open(‘a(chǎn)nalysis.html’, ‘w’) as f: f.write(df_html)
與之配套的,是 read_html 函數(shù),可以將 HTML 轉(zhuǎn)回 DataFrame。
DataFrame 轉(zhuǎn) LaTeX
如果你還沒用過 LaTeX 寫論文,強(qiáng)烈建議嘗試一下。
要把 DataFrame 值轉(zhuǎn)成 LaTeX 表格,也是一個函數(shù)就搞定了:
df.to_latex()
DataFrame 轉(zhuǎn) Markdown
如果你想把代碼放到 GitHub 上,需要寫個 README。
這時候,你可能需要把 DataFrame 轉(zhuǎn)成 Markdown 格式。
Pandas 同樣為你考慮到了這一點(diǎn):
print(df.to_markdown())
注:這里還需要 tabulate 庫
DataFrame 轉(zhuǎn) Excel
說到這里,給同學(xué)們提一個小問題:導(dǎo)師/老板/客戶要你提供 Excel 格式的數(shù)據(jù),你該怎么做?
當(dāng)然是——
df.to_excel(‘a(chǎn)nalysis.xlsx’)
需要注意的是,如果你沒有安裝過 xlwt 和 openpyxl 這兩個工具包,需要先安裝一下。
另外,跟 HTML 一樣,這里也有一個配套函數(shù):read_excel,用來將excel數(shù)據(jù)導(dǎo)入pandas DataFrame。
DataFrame 轉(zhuǎn)字符串
轉(zhuǎn)成字符串,當(dāng)然也沒問題:
df.to_string()
此前,Roman Orac 還曾分享過 5 個他覺得十分好用,但大家可能沒有那么熟悉的 Pandas 技巧。
1、data_range
從外部 API 或數(shù)據(jù)庫獲取數(shù)據(jù)時,需要多次指定時間范圍。
Pandas 的 data_range 覆蓋了這一需求。
import pandas as pd
date_from = “2019-01-01”
date_to = “2019-01-12”
date_range = pd.date_range(date_from, date_to, freq=”D”)
print(date_range)
freq = “D”/“M”/“Y”,該函數(shù)就會分別返回按天、月、年遞增的日期。
2、合并數(shù)據(jù)
當(dāng)你有一個名為left的DataFrame:
和名為right的DataFrame:
想通過關(guān)鍵字“key”把它們整合到一起:
實(shí)現(xiàn)的代碼是:
df_merge = left.merge(right, on = ‘key’, how = ‘left’, indicator = True)
3、最近合并(Nearest merge)
在處理股票或者加密貨幣這樣的財(cái)務(wù)數(shù)據(jù)時,價(jià)格會隨著實(shí)際交易變化。
針對這樣的數(shù)據(jù),Pandas提供了一個好用的功能,merge_asof。
該功能可以通過最近的key(比如時間戳)合并DataFrame。
舉個例子,你有一個存儲報(bào)價(jià)信息的DataFrame。
還有一個存儲交易信息的DataFrame。
現(xiàn)在,你需要把兩個DataFrame中對應(yīng)的信息合并起來。
最新報(bào)價(jià)和交易之間可能有10毫秒的延遲,或者沒有報(bào)價(jià),在進(jìn)行合并時,就可以用上 merge_asof。
pd.merge_asof(trades, quotes, on=”timestamp”, by=’ticker’, tolerance=pd.Timedelta(‘10ms’), direction=‘backward’)
4、創(chuàng)建Excel報(bào)告
在Pandas中,可以直接用DataFrame創(chuàng)建Excel報(bào)告。
import numpy as np
import pandas as pd
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=["a", "b", "c"])
report_name = 'example_report.xlsx'
sheet_name = 'Sheet1'
writer = pd.ExcelWriter(report_name, engine='xlsxwriter')
df.to_excel(writer, sheet_name=sheet_name, index=False)
不只是數(shù)據(jù),還可以添加圖表。
# define the workbook
workbook = writer.book
worksheet = writer.sheets[sheet_name]
# create a chart line object
chart = workbook.add_chart({'type': 'line'})
# configure the series of the chart from the spreadsheet
# using a list of values instead of category/value formulas:
# [sheetname, first_row, first_col, last_row, last_col]
chart.add_series({
'categories': [sheet_name, 1, 0, 3, 0],
'values': [sheet_name, 1, 1, 3, 1],
})
# configure the chart axes
chart.set_x_axis({'name': 'Index', 'position_axis': 'on_tick'})
chart.set_y_axis({'name': 'Value', 'major_gridlines': {'visible': False}})
# place the chart on the worksheet
worksheet.insert_chart('E2', chart)
# output the excel file
writer.save()
注:這里需要 XlsxWriter 庫
5、節(jié)省磁盤空間
Pandas在保存數(shù)據(jù)集時,可以對其進(jìn)行壓縮,其后以壓縮格式進(jìn)行讀取。
先搞一個 300MB 的 DataFrame,把它存成 csv。
df = pd.DataFrame(pd.np.random.randn(50000,300))
df.to_csv(‘random_data.csv’, index=False)
壓縮一下試試:
df.to_csv(‘random_data.gz’, compression=’gzip’, index=False)
文件就變成了136MB。
gzip壓縮文件可以直接讀取:
df = pd.read_csv(‘random_data.gz’)
這一份Pandas技巧筆記,暫且說到這里。各位同學(xué)都做好筆記了嗎?
Talk is cheap, show me the code。學(xué)會了,就用起來吧
— 完 —
量子位 QbitAI · 頭條號簽約
關(guān)注我們,第一時間獲知前沿科技動態(tài)
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。