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 欧美精品网址,91精品国产综合久久婷婷,亚洲视频网址

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          不容錯過的Pandas小技巧:萬能轉格式、輕松合并、壓縮數據

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

          數據分析,如何能錯過 Pandas

          現在,數據科學家 Roman Orac 分享了他在工作中相見恨晚的 Pandas 使用技巧。

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

          話不多說,一起學習一下~

          Pandas實用技巧

          用 Pandas 做數據分析,最大的亮點當屬 DataFrame。不過,在展示成果的時候,常常需要把 DataFrame 轉成另一種格式。

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

          DataFrame 轉 HTML

          如果你需要用 HTML 發送自動報告,那么 to_html 函數了解一下。

          比如,我們先設定這樣一個 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,就可以將表格轉入 html 文件:

          df_html = df.to_html()
          with open(‘analysis.html’, ‘w’) as f: f.write(df_html)

          與之配套的,是 read_html 函數,可以將 HTML 轉回 DataFrame。

          DataFrame 轉 LaTeX

          如果你還沒用過 LaTeX 寫論文,強烈建議嘗試一下。

          要把 DataFrame 值轉成 LaTeX 表格,也是一個函數就搞定了:

          df.to_latex()

          DataFrame 轉 Markdown

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

          這時候,你可能需要把 DataFrame 轉成 Markdown 格式。

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

          print(df.to_markdown())

          注:這里還需要 tabulate 庫

          DataFrame 轉 Excel

          說到這里,給同學們提一個小問題:導師/老板/客戶要你提供 Excel 格式的數據,你該怎么做?

          當然是——

          df.to_excel(‘analysis.xlsx’)

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

          另外,跟 HTML 一樣,這里也有一個配套函數:read_excel,用來將excel數據導入pandas DataFrame。

          DataFrame 轉字符串

          轉成字符串,當然也沒問題:

          df.to_string()

          5個鮮為人知的Pandas技巧

          此前,Roman Orac 還曾分享過 5 個他覺得十分好用,但大家可能沒有那么熟悉的 Pandas 技巧。

          1、data_range

          從外部 API 或數據庫獲取數據時,需要多次指定時間范圍。

          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”,該函數就會分別返回按天、月、年遞增的日期。

          2、合并數據

          當你有一個名為left的DataFrame:

          和名為right的DataFrame:

          想通過關鍵字“key”把它們整合到一起:

          實現的代碼是:

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

          3、最近合并(Nearest merge)

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

          針對這樣的數據,Pandas提供了一個好用的功能,merge_asof

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

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

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

          現在,你需要把兩個DataFrame中對應的信息合并起來。

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

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

          4、創建Excel報告

          在Pandas中,可以直接用DataFrame創建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)

          不只是數據,還可以添加圖表。

          # 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、節省磁盤空間

          Pandas在保存數據集時,可以對其進行壓縮,其后以壓縮格式進行讀取。

          先搞一個 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技巧筆記,暫且說到這里。各位同學都做好筆記了嗎?

          Talk is cheap, show me the code。學會了,就用起來吧

          — 完 —

          量子位 QbitAI · 頭條號簽約

          關注我們,第一時間獲知前沿科技動態

          .本文為公測版,一旦發現有任何錯誤內容,會立即進行修復,請持續關注本站。

          2.本文在正式版之前會不斷的邀請各路黑客大手進行評價測試,歡迎提出異議。

          本文僅針對網站部分,本文會對typecho,wordpress進行測試

          如果你root端口為22,并且密碼是123456,就沒必要往下看了。

          網站環境為linux tengine/nginx mariaDB,同理,apache也有相關設置,百度實驗下即可。

          **本文會闡述以下部分

          1.基礎權限控制

          2.執行目錄限制

          3.PHP的限制

          4.webshell寫入與執行

          5.權限細分,必須寫入的目錄**

          1.基礎權限控制

          什么叫基礎權限?在LNMP架構下,nginx+php-fpm架構需要什么權限?

          這里我們先來看一下默認權限

          默認我們的nginx運行用戶是nginx,而php-fpm的默認用戶是apache,默認用戶安全嗎?

          看一下webshell

          uid=48(apache) gid=48(apache) groups=48(apache)

          很明顯,我們的默認用戶是apache

          我們使用shell新建一個目錄,很明顯,我們是無法建立文件夾的

          mkdir: cannot create directory `1': Permission denied

          在網上很多教程會告訴我們,吧nginx和phpfpm改成同樣的用戶,我們看看會發生什么。

          [root@gov 1]# sudo -u nginx mkdir 1

          [root@gov 1]# ll

          total 4

          drwxr-xr-x 2 nginx nginx 4096 Aug 19 18:08 1

          沒錯,這是一項愚蠢的決定!

          所以默認權限是安全的嗎?并不是,你忘了上傳目錄,我們看下上傳目錄的權限

          drwxrwx--- 3 nginx apache 4096 Aug 14 17:09 uploads

          沒錯,上傳目錄的存在就是放大權限,如果php沒有寫入權限,那么他就無法上傳圖片。

          假設,我們手里有一個0day,現在我要用它來getshell

          我會選擇uploads目錄

          -rw-r--r-- 1 apache apache 0 Aug 19 18:11 1.php

          完美寫入,接著你的站就會被玩壞了,寫入shell后我們可以插件數據庫鏈接密碼,進網站后臺,脫褲,掛黑鏈等等等等

          網站里有幾個目錄是默認可以寫入的?在你的網站目錄下執行ls -l

          通常plugins themes uploads 這三個目錄都是可以寫入的。

          你還有其他目錄可以寫入?趕緊修改權限吧!

          加入我們的網站在/var/www/html/root

          那么下面的命令是極好的,對于必須要有上傳權限的uploads目錄,我們下面再說

          chown -R nginx.apache html

          find /var/www/html/root -type d -exec chmod 750 {} \;

          find /var/www/html/root -not -type d -exec chmod 640 {} \;

          chmod 770 /var/www/html/root/uploads -R

          如果你有某些插件也需要寫入權限,給他權限,并認真看下面的內容。

          2.執行目錄限制

          我們的apache權限有多大呢?相同的網站擁有相同的權限。

          默認情況下,我們的apache權限能瀏覽大部分目錄。最要命的問題在于,他可以跨站執行,從你的網站一直接執行到網站二。

          我們需要給他一個限制,每個虛擬主機一個單獨的限制,沒錯就是open_basedir。

          這里我們需要特別的技巧,每個虛擬機都要限制

          這樣虛擬主機將只允許在網站目錄和tmp目錄執行,而不能穿越到其他目錄

          在烏云有一篇討論繞過open_basedir的文章,所以open_basedir只能讓你更安全而不是徹底安全,所以你還需要往下看。

          server {

          location ~ .*\.php(\/.*)*$ {

          #include pathinfo.conf;

          fastcgi_pass 127.0.0.1:9000;

          fastcgi_index index.php;

          fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/";

          3.PHP的限制

          我們想一個另類解決辦法,如何限制webshell的執行?

          在php.ini里,我們可以選擇關閉某些不安全的函數

          但是由于php這玩意分之多又復雜,這里只能整理出一部分不安全的函數。

          直接添加到php.ini最后面即可

          disable_functions=exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,dl,popen,pcntl_exec,socket_accept,socket_bind,socket_clear_error,socket_close,socket_connect,socket_create_listen,socket_create_pair,socket_create,socket_get_option,socket_getpeername,socket_getsockname,socket_last_error,socket_listen,socket_read,socket_recv,socket_recvfrom,socket_select,socket_send,socket_sendto,socket_set_block,socket_set_nonblock,socket_set_option,socket_shutdown,socket_strerror,socket_write,stream_socket_server,disk_total_space,disk_free_space,diskfreespace,getrusage,get_current_user,getmyuid,getmypid,dl,leak,listen,chgrp,link,symlink,dlopen,proc_nice,proc_get_stats,proc_terminate,shell_exec,sh2_exec,posix_getpwuid,posix_getgrgid,posix_kill,ini_restore,mkfifo,dbmopen,dbase_open,filepro,filepro_rowcount,posix_mkfifo,putenv,sleep,chmod,chown,chroot,ini_set,phpinfo,proc_get_status,error_log,syslog,readlink,putenv

          在看webshell,我們會發現里面空空如也了,并不能執行命令了。

          4.webshell寫入與執行

          現在我們的網站已經很安全了,他能否更加安全?

          現在,我們就要說說我們必須要有執行權限的upload目錄了,nginx同樣提供了解決方案

          location ~ /(usr/uploads)/.*\.(php|php5)?$

          {

          deny all;

          }

          這個時候我們打開uploads中的php文件會提示403

          403 Forbidden

          You don't have permission to access the URL on this server. Sorry for the inconvenience.

          我們的效果得到驗證,即使寫入也不能執行。

          5.必須要寫入權限但是又包含php文件的目錄。

          例如我的用的郵件通知插件目錄內有cache和和log目錄,是必須有寫入權限的

          這里千萬不要犯懶,直接給CommentToMail寫入

          location ~ /(usr/uploads|usr/plugins/CommentToMail/cache|usr/plugins/CommentToMail/log)/.*\.(php|php5)?$

          {

          deny all;

          }

          既可以實現寫入文件,又可以讓php無法執行。

          總結,上面的所有配置:

          用戶與PHP運行權限分離

          nginx:apache

          執行目錄限制

          open_basedir

          PHP函數限制

          php.ini

          特殊目錄關閉PHP解析

          deny all

          權限細分

          xx|xx|xx

          歡迎拍磚,同時 起司靶場v2 上線,完全脫離安全鎖之類的軟件,歡迎測試。

          起司靶場v2

          DF轉HTML在網絡應用中越來越受到重視,PDF作為一種電子文件格式廣泛應用于各種場景,例如在線教育、電子商務等。但是PDF作為一種專有格式,在網絡應用中存在一定的限制,比如不便于搜索引擎索引的問題。因此,將PDF轉換為HTML格式就顯得尤為重要。HTML作為一種開放標準,在瀏覽器中的兼容性強,結構清晰,方便搜索引擎抓取,能很好地解決PDF在網絡應用中的一些問題。那你們知道PDF怎么轉HTML嗎?下面就為大家分享幾種不錯的方法。

          以下是可以將PDF轉HTML的方法:

          一、使用全能PDF轉換助手將PDF轉HTML

          這是一款功能豐富的PDF轉換工具,支持將PDF文件轉換為多種格式,包括HTML。它具有直觀的操作界面和簡單易用的操作流程,即使對于初學者也很友好。

          【轉換步驟】

          步驟一:打開軟件后,選擇“PDF轉HTML”功能。

          步驟二:添加PDF文件,接著調整“頁碼選擇”,然后點擊“開始轉換”即可。

          二、使用HODO將PDF轉HTML

          這是一個受歡迎的PDF轉HTML平臺,它專注于提供出色的轉換質量和準確性。它的轉換引擎使用先進的算法,可以保留原始PDF文件的布局和格式,并將其轉換為高質量的HTML文件。

          【轉換步驟】

          步驟一:使用瀏覽器打開平臺的網站后,選擇“PDFto HTML”功能。

          步驟二:添加PDF文件,接著平臺就會自動識別并進行轉換。

          三、使用ZAMZAR將PDF轉HTML

          這是另一個在線文件轉換平臺,提供多種文件格式之間的轉換服務,包括PDF到HTML的轉換。這個平臺非常方便使用,我們不需要安裝任何軟件。

          【轉換步驟】

          步驟一:打開平臺后,通過“ChooseFiles”上傳PDF文件。

          步驟二:在“WebFormats”中選擇“HTML”格式,接著點擊“ConvertNow”就能完成轉換。

          看完這篇文章,大家都學會PDF怎么轉HTML了嗎?以上三種方法都可以很好地實現PDF到HTML的轉換,幫助我們利用PDF內容在網頁中發揮更廣泛的價值。具體選擇哪種方法,需要大家結合自身實際轉換需求來定。


          主站蜘蛛池模板: 欧洲精品一区二区三区| 亚洲AV无码一区东京热久久 | 精品中文字幕一区在线| 国产精品特级毛片一区二区三区| 国产精品视频一区国模私拍 | 国产福利电影一区二区三区| 亚洲AV成人精品日韩一区| 一区二区精品在线| 一区三区三区不卡| 男人的天堂精品国产一区| 亚洲精品日韩一区二区小说| 蜜桃无码一区二区三区| 夜夜嗨AV一区二区三区| 国产成人综合精品一区| 亚洲人成网站18禁止一区| 冲田杏梨高清无一区二区| 人妻夜夜爽天天爽一区| 伊人久久一区二区三区无码| 国产福利一区二区三区在线视频| 日韩精品无码一区二区三区不卡| 久久99国产精品一区二区| 熟女性饥渴一区二区三区| 久久久精品日本一区二区三区| 中文字幕一区二区三区乱码| 97精品国产福利一区二区三区| 日韩一本之道一区中文字幕| 日本大香伊一区二区三区| 日本一区二区三区在线观看 | 亚洲AV日韩AV一区二区三曲| 日本一道高清一区二区三区| 国产麻豆媒一区一区二区三区| 国产天堂在线一区二区三区| 精品女同一区二区三区免费播放| 国产成人精品无人区一区| 中文字幕精品一区二区三区视频| 狠狠色成人一区二区三区| 亚欧成人中文字幕一区| 国产香蕉一区二区在线网站| 日韩精品中文字幕视频一区| 精品成人av一区二区三区| 亚洲AV无码一区二区三区系列|