ProHoster > Blog > naidheachdan eadar-lìn > Mar a bheir thu aithisgean sìmplidh gu robot. A’ sgrìobhadh bot ann am Python agus Google BigQuery
Mar a bheir thu aithisgean sìmplidh gu robot. A’ sgrìobhadh bot ann am Python agus Google BigQuery
A bheil gnìomhan agad a bhios ag ath-aithris latha às deidh latha, seachdain às deidh seachdain? Mar eisimpleir, a 'sgrìobhadh aithisgean. Bidh thu ag iarraidh dàta, ga sgrùdadh, ga fhaicinn (dèan grafaichean, clàran), agus an uairsin ga chuir chun cheannard agad. Ach dè nam biodh seo uile fèin-ghluasadach?
San oideachadh seo cruthaichidh sinn bot airson Telegram a chuidicheas le bhith ag aithris gu fèin-ghluasadach. Agus is e an rud as fhuaire nach bi anns a’ phrògram gu lèir ach 50 loidhne de chòd! Ma tha thu a’ cruthachadh bot airson Telegram airson a’ chiad uair, bu chòir dhut am fear seo a leughadh cuideachd dreuchd.
Tha sinn a ’cur nar cuimhne:airson a h-uile leughadair de "Habr" - lasachadh de 10 rubles nuair a chlàraicheas tu ann an cùrsa sam bith Skillbox a 'cleachdadh a' chòd adhartachaidh "Habr".
Ma tha sinn airson an t-seirbheis a chleachdadh, feumaidh sinn an API Google BigQuery a cheangal. Gus seo a dhèanamh thèid sinn gu Console Developers Google agus cruthaich pròiseact ùr (no tagh fear a tha ann mu thràth).
Anns a 'phannal smachd, tagh ENABLE APIS AND SERVICES agus coimhead airson BigQuery API.
Tagh Dèan comas gus an API a cheangal.
Cruthaich iuchair cunntais
Rachamaid a-rithist Console Developers Google, tagh an taba Teisteanasan, Cruthaich teisteanasan agus iuchair cunntas seirbheis.
An uairsin - Cunntas seirbheis ùr, agus cuir a-steach an t-ainm anns an raon ainm cunntas seirbheis.
Ma chaidh a h-uile càil gu math, tha an t-àm ann tòiseachadh air a’ phrògram a sgrìobhadh.
A 'cruthachadh tagradh
Airson an oideachadh cleachdaidh sinn dàta bho bigquery-public-data.stackoverflow, airson ar n-aithisg taghaidh sinn an àireamh de fhoillseachaidhean làitheil.
Tha a h-uile dad gu math sìmplidh.
Ceasnachadh a’ bhòrd -> Seall an dàta -> Sàbhail an sealladh -> Cuir an ìomhaigh
Cruthaichidh sinn aon ghnìomh airson gach snàithlean a mhìneachadh.
Ceist gu BigQuery
An toiseach bheir sinn a-steach an leabharlann.
bho google.cloud in-mhalairt bigquery
Cruthaichidh sinn gnìomh ris an canar query_to_bigquery, far a bheil am paramadair ceist.
Tillidh an gnìomh seo an t-iarrtas mar fhrèam dàta.
A 'sealltainn dàta
Gus an duilgheadas seo fhuasgladh, tagh matplotlib.
toirt a-steach matplotlib.pyplot mar plt
Feumaidh sinn còig paramadairean, far a bheil x mar an dàta x-axis, is e x_label an tiotal airson an axis, is e y an dàta y-axis, is e y_label an tiotal airson an axis, agus is e tiotal tiotal an t-seallaidh gu lèir.
def visualize_bar_chart(x, x_label, y, y_label, title):
plt.title(title)
plt.xlabel(x_label)
plt.ylabel(y_label)
index = np.arange(len(x))
plt.xticks(index, x, fontsize=5, rotation=30)
plt.bar(index, y)
return plt
Sàbhail an dealbh
A-nis cleachdamaid dà ghnìomh gus sealladh a chruthachadh agus a shàbhaladh.
Cuiridh sinn an àireamh de phuist a thèid fhoillseachadh gach latha. An toiseach bidh sinn a’ sgrìobhadh iarrtas.
query = """
SELECT DATE(creation_date) date, COUNT(*) total_posts
FROM `bigquery-public-data.stackoverflow.post_history`
GROUP BY 1
HAVING date > DATE_SUB('2018-12-02', INTERVAL 14 DAY)
ORDER BY 1
"""
Bidh a’ cheist a’ cuideachadh le bhith a’ tional dàta airson dà sheachdain a’ tòiseachadh air 2 Dùbhlachd, 2018.
Cleachdaidh sinn an ceann-latha seo oir is e 2018-12-02 an dàta as ùire a chaidh a chlàradh ann am bigquery-public-data.stackoverflow.post_history, ann an cùisean eile faodaidh tu CURRENT_DATE() a chleachdadh gus an dàta as ùire fhaighinn.
Cuir fòn gu gnìomh query_to_bigquery gus an dàta fhaighinn.
dataframe = ceist_to_bigquery(ceist)
An uairsin cleachdaidh sinn an colbh dàta ceann-latha airson an x-axis, agus an colbh total_posts airson an y-axis.
x = frèam dàta['ceann-latha'].tolist()
y = frèam dàta['total_posts'].tolist()
Bidh sinn ga fhaicinn leis a’ ghnìomh visualize_bar_chart agus ga shàbhaladh mar ìomhaigh.
Bidh sinn a’ pasgadh a’ chòd seo ann an gnìomh ris an canar get_and_save_image.
def get_and_save_image():
query = """
SELECT DATE(creation_date) date, COUNT(*) total_posts
FROM `bigquery-public-data.stackoverflow.post_history`
GROUP BY 1
HAVING date > DATE_SUB('2018-12-02', INTERVAL 14 DAY)
ORDER BY 1
"""
dataframe = query_to_bigquery(query)
x = dataframe['date'].tolist()
y = dataframe['total_posts'].tolist()
plt = visualize_bar_chart(x=x, x_label='Date', y=y, y_label='Total Posts', title='Daily Posts')
plt.savefig('viz.png')
Cuir dealbh
Gus aithisg a chuir chun neach a gheibh e, feumaidh fios a bhith agad air paramadair chat_id.
Cleachd fiosrachadh cleachdaiche agus seòrsa / tòiseachadh. Bidh am bot a’ freagairt leis an fhiosrachadh riatanach, tha chat_id anns an raon id.
A-nis cruthaichidh sinn an gnìomh send_image. Cleachdaidh e an gnìomh get_and_save_image gus an dealbh fhaighinn air ais agus a shàbhaladh. Agus an uairsin cuiridh sinn a h-uile càil chun neach-conaltraidh ceart.
Mu dheireadh, cruthaichidh sinn gnìomh eile, prìomh, gus an tagradh a chuir air bhog. Na dìochuimhnich YOUR_TOKEN atharrachadh airson a’ bhot.
Cuimhnich: cuiridh am prògram seo an ìomhaigh gu fèin-ghluasadach aig an àm a shònraicheas tu. Mar eisimpleir, cuiridh sinn aithisg aig naoi sa mhadainn a h-uile latha.