太強了!1 行 Python 代碼幹了妹子一天的工作

2021-03-02 Python數據科學

事情是這樣的,元旦前有朋友向我尋求幫助,吐槽老闆在放假前給他安排一個苦逼的差事,想問問我能不能幫個忙,要不然假期都過不好了


工作具體內容如下,主要是想把一個二維表格轉成一維表格,如下圖(表格為替代品):

於是我馬上想到了pandas,想著這麼強大的函數肯定有這個功能,於是我開始翻閱資料,沒想到還真找到了,而且僅用三行代碼就搞定了,驚的朋友直呼python牛批

下面個大家詳細介紹一下整個過程

1.正確讀取表格

首先按照傳統的方式讀表格:

import pandas as pd
data1 = pd.read_excel('高中生數量.xlsx')
data1

發現索引列沒有被識別,產生了Unnamed: 0列,所以我們應該把第一列設置為索引列,代碼如下:

import pandas as pd
data1 = pd.read_excel('高中生數量.xlsx',index_col=0)  #index_col用來設置索引列
data1

這樣就正常讀取並識別表格了

2.重置索引

這一步主要是將索引列重置,變為普通列,便於下步,代碼如下

data2=data1.reset_index()
data2

可以發現,之前的索引列編程『index』列了

3.將列名轉換為列數據

這一步主要用到pandas的melt函數,melt是逆轉操作函數,可以將列名轉換為列數據(columns name → column values),重構DataFrame,用法如下:

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)


參數解釋:

frame:要處理的數據集;id_vars:不需要被轉換的列名;value_vars:需要轉換的列名,如果剩下的列全部都要轉換,就不用寫了;var_name和value_name是自定義設置對應的列名;col_level :如果列是MultiIndex,則使用此級別。

我們把'index'列保留,並把轉換後的列命名為'year',value命名為'stu_num':

data3=data2.melt(id_vars='index', var_name='year',value_name='stu_num')
data3


4.把第一列設置為索引列

為了防止保存後的表格帶有數字索引,需要把第一列設置為索引列:

data4=data3.set_index('index')
data4


5.保存表格
data4.to_excel('轉換後表格.xlsx')

大功告成,上述代碼可以用1行代碼搞定:

data=data.reset_index().melt('index', var_name='col').set_index('index')

是不是很強悍!

一起感受一下妹子的誇讚吧:

幸福就是這麼簡單,在這裡哥想說一句,不是哥優秀,而是python太強大,哈哈!

我是東哥,最後給大家分享《100本Python電子書》,包括Python編程技巧、數據分析、爬蟲、Web開發、機器學習、深度學習。

現在免費分享出來,有需要的讀者可以下載學習,在下面的公眾號GitHuboy」裡回復關鍵字:Python,就行。

相關焦點

  • 太強了,1行python代碼幹了妹子一天的工作
    事情是這樣的,元旦前有朋友向我尋求幫助,吐槽老闆在放假前給他安排一個苦逼的差事,想問問我能不能幫個忙,要不然假期都過不好了工作具體內容如下,主要是想把一個二維表格轉成一維表格,如下圖(表格為替代品):於是我馬上想到了pandas,想著這麼強大的函數肯定有這個功能,於是我開始翻閱資料,沒想到還真找到了,而且僅用三行代碼就搞定了,驚的朋友直呼python牛批
  • 程式設計師一天工作量改了5行代碼,工作很輕鬆?
    領導安排張工跟進,接到任務,張工第一時間就是想重現這個問題,可是怎麼也復現不了,費了九牛二虎之力,終於從上萬行代碼中定位到問題所在,最後張工修改了5行代碼,問題解決了。這時已經快下班了。張工伸了一下懶腰,這時財務漂亮妹子過來了,找張工確認交通費用報銷的事情,見張工懶羊羊的。
  • 寫出漂亮 Python 代碼的 20條準則
    用 Python 寫代碼時,個人也會遵循自己的風格。然而,當我們必須花大把時間來理解一個人的隱式代碼時,這項工作肯定不受歡迎,這種情況同樣可能發生在別人閱讀我們的代碼時。所以,讓我們聚焦 Python 之禪和一些改進技巧,從而解決問題。
  • PythonPython100個練手項目
    -05-07 13:26:09 來源: 三河講Python 舉報     1.
  • 50行Python代碼實現經典遊戲,不僅是划水神器,更是學習利器!
    那麼,今天要介紹的這款Python項目就可以輕鬆實現你成為遊戲開發者的想法,實現前面提到的這些經典遊戲只需要50-100代碼即可完成。我覺得這樣比拿來即用的搬運工作要有趣很多,且更加具有挑戰。    head = snake[-1].copy()    head.move(aim)    if not inside(head) or head in snake:        square(head.x, head.y, 9, 'red')        update()        return    snake.append
  • 學python?不是一個python入門教程就行,學之前你必須知道這些
    既然是就業那麼就要看市場,就是人才需求市場,這裡說的市場當讓是說python人才需求的市場了。說到市場當然python每個方向肯定有市場了,咱們直接看主要矛盾:一個是需求量,另一個是入行的難易程度。python全棧目前是市場的需求量最大,入行也是最容易的。要是為了就業那就先這樣入門入行,就不用想了。看重前景方向:那麼學python大數據分析或是python機器學習。
  • 10行代碼實現python人臉識別
    而且現在各大廠商也都提供了人臉識別的API接口供我們調用,可以說幾行代碼就可以完成人臉識別。但是人臉識別的根本還是基於圖像處理。在Python中最強大的圖像處理庫就是OpenCV。OpenCV簡介OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上。
  • 使用Visual Studio 和 python 設置自己的數據科學工作區
    其中,管理 python 環境可能是一件讓人頭疼的事情。,搭建一個好的工作空間將讓你避免很多不必要的麻煩。如果你正在工作,你的 python 環境突然不起作用了怎麼辦?這是因為 VS Code 自動識別出你正在編輯的是一個 python 文件。首先讓我們看看是否可以運行我們的 python 文件。你可以直接在終端或從交互式 python 窗口運行它。交互式 python 窗口非常有用,因為它在調試代碼時提供了更多的反饋,而且還允許你在 python 腳本中運行稱為 cells 的不同代碼段。要運行腳本,請按 shift-enter。
  • python-docx添加和刪除表格行、列
    02表格行、列的定位在python-docx中表格中行或者列的定位主要通過table.rows和table.columns兩個屬性獲取行和列的的總對象,然後使用索引獲取指定的行或者列對象。獲取表格中的第2行和第2列代碼如下:row = table.rows[1]column = table.columns[1]
  • [福利-005]讓你的Python代碼更逼格系列-使用with
    鑑於網上有大量詳解,此系列只負責引路不負責長篇大論 """技巧1:使用with相對於其他關鍵字with顯得不那麼常用,以至於很多童鞋已經忘了有這麼一個keyword。實際上每次使用with都可以節省一到幾行代碼,並且顯著提高逼格。with常用的使用情景是和file連用。
  • 數據科學家需要簡潔的Python代碼
    雖然更成熟的數據科學功能使雙方之間擁有卓有成效的工作夥伴關係,建立了完善的CI / CD管道,並明確定義了職責分工,但早期團隊通常由經驗不足的數據科學家主導。所以,代碼質量受到損害,技術債務以膠合代碼,流水線叢林,無效的實驗代碼路徑和配置債務的形式呈指數級累積[1]。
  • 別再用PS了,我用五行Python代碼就實現了批量摳圖
    這就需要用到飛槳了,飛槳是一個開源的深度學習平臺,使用其工具僅用十幾行代碼就能實現遷移學習。我們執行下列語句:python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple安裝完成後,可以在環境中測試一下是否成功。
  • Python一行代碼,能玩這麼多童年的遊戲?
    >,一行代碼就能進入使用Python開發的小遊戲快樂玩耍!安裝完之後我們可以使用python -m freegames list來查看所有的遊戲列表貪吃蛇現在我們可以使用一行代碼啟動相關遊戲,比如貪吃蛇snakepython -m freegames.snake
  • Python基礎教程之小白入門篇
    擁有成熟的程序包資源庫Python除了其自帶的標準庫外,還擁有大量的豐富且強大的第三方庫,避免了一些「重複造輪子」的工作。PyPI是python官方的第三方庫的倉庫,擁有超過85000個python模塊和腳本的資源庫,堪稱是python語言的「寶藏」。跨平臺的先驅者python可以在Windows、Linux·、macOS眾多不同平臺使用,且其代碼都是開源的,非常貼心。
  • 《小灰教你零基礎學python》-Python入門語言
    電腦(包括手機)由硬體和程序構成:很多硬體 + 很多程序 = 電腦具體硬體和程序如何集成這個咱們不用太了解,這個是計算機設計原理裡面的東西了,咱只需要了解,電腦就是硬體(攝像頭、,其實理解咱這麼理解就行:咱們和外國人交流需要說英語,那麼咱們必須要學會英語才能和對方溝通;咱們需要讓電腦進行「溝通」就必須要使用程式語言。
  • 用 Python 分析 Python 工作現狀
    編寫代碼我們通過分析 HTML 網頁可以知道,所有的工作信息都是保存在 ul 這個標籤中的,我們可以通過上面的代碼拿到頁面中所有的 ul 標籤,find_all 返回的是一個列表,然後再查看,工作具體位於第幾個 ul 中,這樣就拿到具體的工作信息了。
  • Python入門指南教程:10天學會使用python做爬蟲!免費領取!
    從去年開始,公眾號鋪天蓋地的python廣告,讓很多行外人也知道了python這個東西,python語言開始變得無所不能,剛畢業的新手用python能做什麼?三分鐘做好了職場老手一天才能做完的表格十分鐘採集下全網競爭對手的數據寫一個軟體一年躺賺幾十萬!
  • 100行代碼,用Python做一個「消滅病毒」的小遊戲
    以前不是有一個打地鼠的遊戲,這次用簡單100多行代碼寫一個《消滅地鼠病毒》的小遊戲,效果如下,廢話少說先看視頻!視頻鎮樓PyQt介紹及安裝PyQt5是基於Digia公司強大的圖形程式框架Qt5的py的python接口,由一組python模塊構成。
  • 坑爹的Python陷阱
    我個人對陷阱的定義是這樣的:代碼看起來可以工作,但不是以你「想當然「」的方式。如果一段代碼直接出錯,拋出了異常,我不認為這是陷阱。
  • 5款最受Python開發者歡迎的Python IDE和代碼編輯器
    這是小編收集的python學習資料(這是我的一部分截圖),希望對你們有幫助,關注,轉發,私信小編「01」即可獲取!1、PyCharm IDE價格:每位開發人員每年199美元支持的作業系統:Windows,MacOS和Linux發行版。由JetBrains開發和維護的IDE PyCharm是最受歡迎的Python IDE之一。