Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 你懂的在线免费视频,国产精品成人久久久,先锋影音一区二区

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          不容錯過的Pandas小技巧:萬能轉(zhuǎn)格式、輕松合并、壓縮數(shù)據(jù)

          者:Roman Orac
          魚羊 編譯整理
          量子位 報道 | 公眾號 QbitAI

          數(shù)據(jù)分析,如何能錯過 Pandas

          現(xiàn)在,數(shù)據(jù)科學(xué)家 Roman Orac 分享了他在工作中相見恨晚的 Pandas 使用技巧。

          了解了這些技巧,能讓你在學(xué)習(xí)、使用 Pandas 的時候更加高效。

          話不多說,一起學(xué)習(xí)一下~

          Pandas實用技巧

          用 Pandas 做數(shù)據(jù)分析,最大的亮點當(dāng)屬 DataFrame。不過,在展示成果的時候,常常需要把 DataFrame 轉(zhuǎn)成另一種格式。

          Pandas 在這一點上其實十分友好,只需添加一行代碼。

          DataFrame 轉(zhuǎn) HTML

          如果你需要用 HTML 發(fā)送自動報告,那么 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 寫論文,強烈建議嘗試一下。

          要把 DataFrame 值轉(zhuǎn)成 LaTeX 表格,也是一個函數(shù)就搞定了:

          df.to_latex()

          DataFrame 轉(zhuǎn) Markdown

          如果你想把代碼放到 GitHub 上,需要寫個 README。

          這時候,你可能需要把 DataFrame 轉(zhuǎn)成 Markdown 格式。

          Pandas 同樣為你考慮到了這一點:

          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’)

          需要注意的是,如果你沒有安裝過 xlwtopenpyxl 這兩個工具包,需要先安裝一下。

          另外,跟 HTML 一樣,這里也有一個配套函數(shù):read_excel,用來將excel數(shù)據(jù)導(dǎo)入pandas DataFrame。

          DataFrame 轉(zhuǎn)字符串

          轉(zhuǎn)成字符串,當(dāng)然也沒問題:

          df.to_string()

          5個鮮為人知的Pandas技巧

          此前,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”把它們整合到一起:

          實現(xiàn)的代碼是:

          df_merge = left.merge(right, on = ‘key’, how = ‘left’, indicator = True)

          3、最近合并(Nearest merge)

          在處理股票或者加密貨幣這樣的財務(wù)數(shù)據(jù)時,價格會隨著實際交易變化。

          針對這樣的數(shù)據(jù),Pandas提供了一個好用的功能,merge_asof

          該功能可以通過最近的key(比如時間戳)合并DataFrame。

          舉個例子,你有一個存儲報價信息的DataFrame。

          還有一個存儲交易信息的DataFrame。

          現(xiàn)在,你需要把兩個DataFrame中對應(yīng)的信息合并起來。

          最新報價和交易之間可能有10毫秒的延遲,或者沒有報價,在進行合并時,就可以用上 merge_asof。

          pd.merge_asof(trades, quotes, on=”timestamp”, by=’ticker’, tolerance=pd.Timedelta(‘10ms’), direction=‘backward’)

          4、創(chuàng)建Excel報告

          在Pandas中,可以直接用DataFrame創(chuàng)建Excel報告。

          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ù)集時,可以對其進行壓縮,其后以壓縮格式進行讀取。

          先搞一個 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)

          字符串(String)、數(shù)字(Number)、布爾(Boolean)、數(shù)組(Array)、對象(Object)、空(Null)、未定義(Undefined)。

          JavaScript 擁有動態(tài)類型

          JavaScript 擁有動態(tài)類型。這意味著相同的變量可用作不同的類型:

          實例

          var x; // x 為 undefined

          var x = 5; // 現(xiàn)在 x 為數(shù)字

          var x = "John"; // 現(xiàn)在 x 為字符串

          JavaScript 字符串

          字符串是存儲字符(比如 "Bill Gates")的變量。

          字符串可以是引號中的任意文本。您可以使用單引號或雙引號:

          實例

          var carname="Volvo XC60";

          var carname='Volvo XC60';

          您可以在字符串中使用引號,只要不匹配包圍字符串的引號即可:

          實例

          var answer="It's alright";

          var answer="He is called 'Johnny'";

          var answer='He is called "Johnny"';

          JavaScript 數(shù)字

          JavaScript 只有一種數(shù)字類型。數(shù)字可以帶小數(shù)點,也可以不帶:

          實例

          var x1=34.00; //使用小數(shù)點來寫

          var x2=34; // //不使用小數(shù)點來寫

          極大或極小的數(shù)字可以通過科學(xué)(指數(shù))計數(shù)法來書寫:

          實例

          var y=123e5; // 12300000

          var z=123e-5; // 0.00123

          JavaScript 布爾

          布爾(邏輯)只能有兩個值:true 或 false。

          var x=true;

          var y=false;

          布爾常用在條件測試中。您將在本教程稍后的章節(jié)中學(xué)到更多關(guān)于條件測試的知識。

          JavaScript 數(shù)組

          下面的代碼創(chuàng)建名為 cars 的數(shù)組:

          var cars=new Array();

          cars[0]="Saab";

          cars[1]="Volvo";

          cars[2]="BMW";

          或者 (condensed array):

          var cars=new Array("Saab","Volvo","BMW");

          或者 (literal array):

          實例

          var cars=["Saab","Volvo","BMW"];

          數(shù)組下標(biāo)是基于零的,所以第一個項目是 [0],第二個是 [1],以此類推。

          JavaScript 對象

          對象由花括號分隔。在括號內(nèi)部,對象的屬性以名稱和值對的形式 (name : value) 來定義。屬性由逗號分隔:

          var person={firstname:"John", lastname:"Doe", id:5566};

          上面例子中的對象 (person) 有三個屬性:firstname、lastname 以及 id。

          空格和折行無關(guān)緊要。聲明可橫跨多行:

          var person={

          firstname : "John",

          lastname : "Doe",

          id : 5566

          };

          對象屬性有兩種尋址方式:

          實例

          name=person.lastname;

          name=person["lastname"];

          Undefined 和 Null

          Undefined 這個值表示變量不含有值。

          可以通過將變量的值設(shè)置為 null 來清空變量。

          實例

          cars=null;

          person=null;

          聲明變量類型

          當(dāng)您聲明新變量時,可以使用關(guān)鍵詞 "new" 來聲明其類型:

          var carname=new String;

          var x= new Number;

          var y= new Boolean;

          var cars= new Array;

          var person= new Object;

          JavaScript 變量均為對象。當(dāng)您聲明一個變量時,就創(chuàng)建了一個新的對象。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          件是 Web 開發(fā)的方向,現(xiàn)在的熱點是 JavaScript 組件,但是 HTML 組件未來可能更有希望。 本文就介紹 HTML 組件的基礎(chǔ)知識:自定義元素(custom elements)。

          一、瀏覽器處理

          我們一般都使用標(biāo)準(zhǔn)的 HTML 元素。

          <p>Hello World</p>
          

          上面代碼中,<p>就是標(biāo)準(zhǔn)的 HTML 元素。

          如果使用非標(biāo)準(zhǔn)的自定義元素,會有什么結(jié)果?

          <greeting>Hello World</greeting>
          

          上面代碼中,<greeting>就是非標(biāo)準(zhǔn)元素,瀏覽器不認(rèn)識它。這段代碼的運行結(jié)果是,瀏覽器照常顯示Hello World,這說明瀏覽器并沒有過濾這個元素。

          現(xiàn)在,為自定義元素加上樣式。

          greeting {
           display: block;
           font-size: 36px;
           color: red;
          }
          

          運行結(jié)果如下。

          接著,使用腳本操作這個元素。

          function customTag(tagName, fn){
           Array
           .from(document.getElementsByTagName(tagName))
           .forEach(fn);
          }
          function greetingHandler(element) {
           element.innerHTML = '你好,世界';
          } 
          customTag('greeting', greetingHandler);
          

          運行結(jié)果如下。

          這說明,瀏覽器對待自定義元素,就像對待標(biāo)準(zhǔn)元素一樣,只是沒有默認(rèn)的樣式和行為。這種處理方式是寫入 HTML5 標(biāo)準(zhǔn)的。

          “User agents must treat elements and attributes that they do not understand as semantically neutral; leaving them in the DOM (for DOM processors), and styling them according to CSS (for CSS processors), but not inferring any meaning from them.”

          上面這段話的意思是,瀏覽器必須將自定義元素保留在 DOM 之中,但不會任何語義。除此之外,自定義元素與標(biāo)準(zhǔn)元素都一致。

          事實上,瀏覽器提供了一個HTMLUnknownElement對象,所有自定義元素都是該對象的實例。

          var tabs = document.createElement('tabs');
          tabs instanceof HTMLUnknownElement // true
          tabs instanceof HTMLElement // true
          

          上面代碼中,tabs是一個自定義元素,同時繼承了HTMLUnknownElement和HTMLElement接口。

          獲取方式:

          1.在你手機的右上角有【關(guān)注】選項,或點擊我的頭像,點擊關(guān)注!(關(guān)注我)

          2.關(guān)注后,手機客戶端點擊我的主頁面,右上角有私信,請私信發(fā)我:編程

          電腦已經(jīng)設(shè)置好了關(guān)鍵詞自動回復(fù),自動領(lǐng)取就好了!這幾天上萬個消息,真的回復(fù)不過來,所以回復(fù)的時候請注意關(guān)鍵詞!

          其實做為一個開發(fā)者,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要這里請私信我“編程”不管你是小白還是大牛歡迎入住大家一起交流成長。小編會在里面不定期分享干貨源碼,包括我精心整理的一份零基礎(chǔ)教程。歡迎各位感興趣的的小伙伴。

          學(xué)習(xí)思路:


          二、HTML import

          有了自定義元素,就可以寫出語義性非常好的 HTML 代碼。

          <share-buttons>
           <social-button type="weibo">
           <a href="...">微博</a>
           </social-button>
           <social-button type="weixin">
           <a href="...">微信</a>
           </social-button>
          </share-buttons>
          

          上面的代碼,一眼就能看出語義。

          如果將<share-buttons>元素的樣式與腳本,封裝在一個 HTML 文件share-buttons.html之中,這個元素就可以復(fù)用了。

          使用的時候,先引入share-buttons.html。

          <link rel="import" href="share-buttons.html">
          

          然后,就可以在網(wǎng)頁中使用<share-buttons>了。

          <article>
           <h1>Title</h1>
           <share-buttons/>
           ... ...
          </article>
          

          HTML imports 的更多用法可以參考教程(1,2)。目前只有 Chrome 瀏覽器支持這個語法。


          三、Custom Elements 標(biāo)準(zhǔn)

          HTML5 標(biāo)準(zhǔn)規(guī)定了自定義元素是合法的。然后,W3C 就為自定義元素制定了一個單獨的 Custom Elements 標(biāo)準(zhǔn)。

          它與其他三個標(biāo)準(zhǔn)放在一起—- HTML Imports,HTML Template、Shadow DOM—-統(tǒng)稱為 Web Components 規(guī)范。目前,這個規(guī)范只有 Chrome 瀏覽器支持。

          Custom Elements 標(biāo)準(zhǔn)對自定義元素的名字做了限制。

          “自定義元素的名字必須包含一個破折號(-)所以<x-tags>、<my-element>和<my-awesome-app>都是正確的名字,而<tabs>和<foo_bar>是不正確的。這樣的限制使得 HTML 解析器可以分辨那些是標(biāo)準(zhǔn)元素,哪些是自定義元素。”

          注意,一旦名字之中使用了破折號,自定義元素就不是HTMLUnknownElement的實例了。

          var xTabs = document.createElement('x-tabs');
          xTabs instanceof HTMLUnknownElement // false
          xTabs instanceof HTMLElement // true
          

          Custom Elements 標(biāo)準(zhǔn)規(guī)定了,自定義元素的定義可以使用 ES6 的class語法。

          // 定義一個 <my-element></my-element>
          class MyElement extends HTMLElement {...}
          window.customElements.define('my-element', MyElement);
          

          上面代碼中,原生的window.customElements對象的define方法用來定義 Custom Element。該方法接受兩個參數(shù),第一個參數(shù)是自定義元素的名字,第二個參數(shù)是一個 ES6 的class。

          這個class使用get和set方法定義 Custom Element 的某個屬性。

          class MyElement extends HTMLElement {
           get content() {
           return this.getAttribute('content');
           }
           set content(val) {
           this.setAttribute('content', val);
           }
          }
          

          有了這個定義,網(wǎng)頁之中就可以插入<my-element>了。

          <my-element content="Custom Element">
           Hello
          </my-element>
          

          處理腳本如下。

          function customTag(tagName, fn){
           Array
           .from(document.getElementsByTagName(tagName))
           .forEach(fn);
          }
          function myElementHandler(element) {
           element.textConent = element.content;
          }
          customTag('my-element', myElementHandler);
          

          運行結(jié)果如下。

          ES6 Class 的一個好處是,可以很容易地寫出繼承類。

          class MyNewElement extends MyElement {
           // ...
          }
          customElements.define('my-new-element', MyNewElement);
          

          今天的教程就到這里,更多用法請參考谷歌的官方教程。


          主站蜘蛛池模板: 亚洲国产综合无码一区二区二三区 | 欧美日韩精品一区二区在线视频 | 国产福利电影一区二区三区,日韩伦理电影在线福 | 一区二区三区影院| 久久亚洲一区二区| 日韩电影一区二区三区| 四虎一区二区成人免费影院网址 | 日本一区二区在线不卡| 国产一区二区三区韩国女主播| 在线观看国产区亚洲一区成人| 女人和拘做受全程看视频日本综合a一区二区视频 | 国产精品福利一区| 成人精品一区二区电影 | 精品久久久久一区二区三区| 精品少妇人妻AV一区二区| 无码人妻一区二区三区在线视频| 中文字幕久久久久一区| 国产亚洲综合精品一区二区三区 | 中文人妻av高清一区二区| 一区二区三区四区电影视频在线观看| 精品国产一区二区三区免费看| 国产主播在线一区| 亚洲熟女www一区二区三区| 一区二区不卡在线| 亚洲AV无码一区二区三区性色| 国产一区二区三区小说| 99精品国产一区二区三区不卡| 国产精品无码AV一区二区三区| 久久久久人妻精品一区蜜桃| 久久一区不卡中文字幕| 精品无码一区二区三区爱欲| 亚洲丰满熟女一区二区v| 精品国产一区二区三区色欲| 亚洲欧洲无码一区二区三区| 无码喷水一区二区浪潮AV| 国产精品一区二区综合| 一区二区三区四区精品| 国产伦理一区二区| 无码av免费毛片一区二区| 国产精品久久久久一区二区三区| 国产萌白酱在线一区二区|