国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[譯]從列表或字典創(chuàng)建Pandas的DataFrame對象

zhaochunqi / 600人閱讀

摘要:在這些情況下,了解如何從標(biāo)準(zhǔn)列表或字典創(chuàng)建會(huì)很有幫助。大多數(shù)人會(huì)注意到列的順序看起來不對。這個(gè)問題出現(xiàn)的原因是標(biāo)準(zhǔn)的字典不保留其鍵的順序。列表從創(chuàng)建的另一個(gè)選擇是將數(shù)據(jù)包含在列表結(jié)構(gòu)中。

介紹

每當(dāng)我使用pandas進(jìn)行分析時(shí),我的第一個(gè)目標(biāo)是使用眾多可用選項(xiàng)中的一個(gè)將數(shù)據(jù)導(dǎo)入Pandas的DataFrame 。
對于絕大多數(shù)情況下,我使用的 read_excel , read_csv 或 read_sql 。

但是,有些情況下我只需要幾行數(shù)據(jù)或包含這些數(shù)據(jù)里的一些計(jì)算。
在這些情況下,了解如何從標(biāo)準(zhǔn)python列表或字典創(chuàng)建DataFrames會(huì)很有幫助。
基本過程并不困難,但因?yàn)橛袔追N不同的選擇,所以有助于理解每種方法的工作原理。
我永遠(yuǎn)記不住我是否應(yīng)該使用 from_dict , from_records , from_items 或默認(rèn)的 DataFrame 構(gòu)造函數(shù)。
通常情況下,通過一些反復(fù)試驗(yàn)和錯(cuò)誤,我能搞定它。但由于它仍然讓我感到困惑,我想我會(huì)通過以下幾個(gè)例子來澄清這些不同的方法。
在本文的最后,我簡要介紹了在生成Excel報(bào)表時(shí)如何使用它。

從Python的數(shù)據(jù)結(jié)構(gòu)中生成DataFrame

您可以使用多種方法來獲取標(biāo)準(zhǔn)python數(shù)據(jù)結(jié)構(gòu)并創(chuàng)建Pandas的DataFrame。
出于這些示例的目的,我將為3個(gè)虛構(gòu)公司創(chuàng)建一個(gè)包含3個(gè)月銷售信息的DataFrame。

字典

在展示下面的示例之前,我假設(shè)已執(zhí)行以下導(dǎo)入:

import pandas as pd
from collections import OrderedDict
from datetime import date

從python創(chuàng)建DataFrame的“默認(rèn)”方式是使用字典列表。在這種情況下,每個(gè)字典鍵用于列標(biāo)題。將自動(dòng)創(chuàng)建默認(rèn)索引:

sales = [{"account": "Jones LLC", "Jan": 150, "Feb": 200, "Mar": 140},
         {"account": "Alpha Co",  "Jan": 200, "Feb": 210, "Mar": 215},
         {"account": "Blue Inc",  "Jan": 50,  "Feb": 90,  "Mar": 95 }]
df = pd.DataFrame(sales)


如您所見,這種方法非常“面向行”。如果您想以“面向列”的方式創(chuàng)建DataFrame,您可以使用 from_dict

sales = {"account": ["Jones LLC", "Alpha Co", "Blue Inc"],
         "Jan": [150, 200, 50],sheng cheng
         "Feb": [200, 210, 90],
         "Mar": [140, 215, 95]}
df = pd.DataFrame.from_dict(sales)

使用此方法,您可以獲得與上面相同的結(jié)果。需要考慮的關(guān)鍵點(diǎn)是哪種方法更容易理解您獨(dú)特的使用場景。
有時(shí),以面向行的方式獲取數(shù)據(jù)更容易,而其他時(shí)候以列為導(dǎo)向的則更容易。
了解這些選項(xiàng)將有助于使您的代碼更簡單,更易于理解,以滿足您的特定需求。

大多數(shù)人會(huì)注意到列的順序看起來不對。這個(gè)問題出現(xiàn)的原因是標(biāo)準(zhǔn)的python字典不保留其鍵的順序。
如果要控制列順序,則有兩種方式。

第一種,您可以手動(dòng)重新排序列:

df = df[["account", "Jan", "Feb", "Mar"]]

或者你可以使用python中的OrderedDict 創(chuàng)建你的有序字典 。

sales = OrderedDict([ ("account", ["Jones LLC", "Alpha Co", "Blue Inc"]),
          ("Jan", [150, 200, 50]),
          ("Feb",  [200, 210, 90]),
          ("Mar", [140, 215, 95]) ] )
df = pd.DataFrame.from_dict(sales)

這兩種方法都會(huì)按照您可能期望的順序?yàn)槟峁┙Y(jié)果。

由于我在下面概述的原因,我傾向于專門重新排序我的列,盡管使用OrderedDict一直是一個(gè)很好理解的選項(xiàng)。

列表

從python創(chuàng)建DataFrame的另一個(gè)選擇是將數(shù)據(jù)包含在列表結(jié)構(gòu)中。
第一種方法是使用pandas進(jìn)行面向行的方法 from_records 。此方法類似于字典方法,但您需要顯式調(diào)出列標(biāo)簽。

sales = [("Jones LLC", 150, 200, 50),
         ("Alpha Co", 200, 210, 90),
         ("Blue Inc", 140, 215, 95)]
labels = ["account", "Jan", "Feb", "Mar"]
df = pd.DataFrame.from_records(sales, columns=labels)

第二種方法是 from_items 面向列的,實(shí)際上看起來類似于 OrderedDict 上面的例子。

sales = [("account", ["Jones LLC", "Alpha Co", "Blue Inc"]),
         ("Jan", [150, 200, 50]),
         ("Feb", [200, 210, 90]),
         ("Mar", [140, 215, 95]),
         ]
df = pd.DataFrame.from_items(sales)

這兩個(gè)示例都將生成以下DataFrame:

各種選項(xiàng)的直觀總結(jié)

為了保持各種選項(xiàng)在我的腦海中清晰,我將這個(gè)簡單的圖形放在一起,以顯示字典與列表選項(xiàng)以及行與列導(dǎo)向的方法。
這是一個(gè)2X2的網(wǎng)格,所以我希望所有來詢問的人都留下深刻的印象!

為簡單起見,我沒有展示 OrderedDict 方法,因?yàn)檫@種 from_items 方法可能更像是一個(gè)現(xiàn)實(shí)世界的解決方案。
如果這有點(diǎn)難以閱讀,您也可以獲得PDF版本。

簡單的例子

對于一個(gè)簡單的概念,這似乎有很多解釋。
但是,我經(jīng)常使用這些方法來構(gòu)建小型DataFrame,并將其與更復(fù)雜的分析結(jié)合起來。

舉一個(gè)例子,假設(shè)我們要保存我們的DataFrame并包含一個(gè)頁腳,以便我們知道它何時(shí)被創(chuàng)建以及它是由誰創(chuàng)建的。
如果我們填充DataFrame并將其寫入Excel比我們嘗試將單個(gè)單元格寫入Excel更容易。

拿我們現(xiàn)有的DataFrame:

sales = [("account", ["Jones LLC", "Alpha Co", "Blue Inc"]),
         ("Jan", [150, 200, 50]),
         ("Feb", [200, 210, 90]),
         ("Mar", [140, 215, 95]),
         ]
df = pd.DataFrame.from_items(sales)

現(xiàn)在構(gòu)建一個(gè)頁腳(以列為導(dǎo)向):

from datetime import date

create_date = "{:%m-%d-%Y}".format(date.today())
created_by = "CM"
footer = [("Created by", [created_by]), ("Created on", [create_date]), ("Version", [1.1])]
df_footer = pd.DataFrame.from_items(footer)


合并進(jìn)入一個(gè)Excel中的一個(gè)sheet:

writer = pd.ExcelWriter("simple-report.xlsx", engine="xlsxwriter")
df.to_excel(writer, index=False)
df_footer.to_excel(writer, startrow=6, index=False)
writer.save()


這里的秘訣是使用 startrow 在銷售數(shù)據(jù)框架下面寫入頁腳DataFrame。還有一個(gè)相應(yīng)的startcol,所以你可以控制成為你想要的列布局。
這使得基本 to_excel 功能具有很大的靈活性。

總結(jié)

大多數(shù)Pandas用戶很快就熟悉了電子表格,CSV和SQL數(shù)據(jù)的攝取。
但是,有時(shí)您會(huì)在基本列表或字典中包含數(shù)據(jù)并希望填充DataFrame。
Pandas提供了幾種選擇,但可能并不總是立即明確何時(shí)使用哪種選擇。

沒有一種方法是“最好的”,它實(shí)際上取決于您的需求。
我傾向于喜歡基于列表的方法,因?yàn)槲彝ǔjP(guān)心排序,列表確保我保留順序。
最重要的是要知道這些選項(xiàng)是可用的,這樣您就可以聰明地使用最簡單的選項(xiàng)來滿足您的特定情況。

從表面上看,這些代碼樣例看似簡單,但我發(fā)現(xiàn)使用這些方法生成快速的信息片非常常見,他們可以增加或澄清更復(fù)雜的分析。
DataFrame中數(shù)據(jù)的好處在于它很容易轉(zhuǎn)換為其他格式,如Excel,CSV, HTML,LaTeX等。
這種靈活性對于臨時(shí)報(bào)告生成非常方便。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42528.html

相關(guān)文章

  • 【數(shù)據(jù)科學(xué)系統(tǒng)學(xué)習(xí)】Python # 數(shù)據(jù)分析基本操作[二] pandas

    摘要:中面向行和面向列的操作基本是平衡的。用層次化索引,將其表示為更高維度的數(shù)據(jù)。使用浮點(diǎn)值表示浮點(diǎn)和非浮點(diǎn)數(shù)組中的缺失數(shù)據(jù)。索引的的格式化輸出形式選取數(shù)據(jù)子集在內(nèi)層中進(jìn)行選取層次化索引在數(shù)據(jù)重塑和基于分組的操作中很重要。 我們在上一篇介紹了 NumPy,本篇介紹 pandas。 pandas入門 Pandas 是基于Numpy構(gòu)建的,讓以NumPy為中心的應(yīng)用變的更加簡單。 pandas...

    jayzou 評論0 收藏0
  • 【數(shù)據(jù)科學(xué)系統(tǒng)學(xué)習(xí)】Python # 數(shù)據(jù)分析基本操作[四] 數(shù)據(jù)規(guī)整化和數(shù)據(jù)聚合與分組運(yùn)算

    摘要:數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑數(shù)據(jù)聚合與分組運(yùn)算數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑合并數(shù)據(jù)集可根據(jù)一個(gè)或多個(gè)鍵將不同中的行鏈接起來。函數(shù)根據(jù)樣本分位數(shù)對數(shù)據(jù)進(jìn)行面元?jiǎng)澐帧W值浠颍o出待分組軸上的值與分組名之間的對應(yīng)關(guān)系。 本篇內(nèi)容為整理《利用Python進(jìn)行數(shù)據(jù)分析》,博主使用代碼為 Python3,部分內(nèi)容和書本有出入。 在前幾篇中我們介紹了 NumPy、pandas、matplotlib 三個(gè)...

    The question 評論0 收藏0
  • 一文帶你斬殺Python之Numpy??Pandas全部操作【全網(wǎng)最詳細(xì)】???

    目錄Numpy簡介Numpy操作集合1、不同維度數(shù)據(jù)的表示1.1 一維數(shù)據(jù)的表示1.2 二維數(shù)據(jù)的表示1.3 三維數(shù)據(jù)的表示2、 為什么要使用Numpy2.1、Numpy的ndarray具有廣播功能2.2 Numpy數(shù)組的性能比Python原生數(shù)據(jù)類型高3 ndarray的屬性和基本操作3.1 ndarray的基本屬性3.2 ndarray元素類型3.3 創(chuàng)建ndarray的方式3.4 ndarr...

    asoren 評論0 收藏0
  • Pandas庫基礎(chǔ)分析——數(shù)據(jù)生成和訪問

    摘要:本文著重介紹這兩種數(shù)據(jù)結(jié)構(gòu)的生成和訪問的基本方法。是一種類似于一維數(shù)組的對象,由一組數(shù)據(jù)一維數(shù)組對象和一組與之對應(yīng)相關(guān)的數(shù)據(jù)標(biāo)簽索引組成。注當(dāng)數(shù)據(jù)未指定索引時(shí),會(huì)自動(dòng)創(chuàng)建整數(shù)型索引注通過字典創(chuàng)建,可視為一個(gè)定長的有序字典。 前言 Pandas是Python環(huán)境下最有名的數(shù)據(jù)統(tǒng)計(jì)包,是基于 Numpy 構(gòu)建的含有更高級數(shù)據(jù)結(jié)構(gòu)和工具的數(shù)據(jù)分析包。Pandas圍繞著 Series 和 Da...

    Jonathan Shieber 評論0 收藏0
  • python_pandas學(xué)習(xí)

    摘要:的名稱來自于面板數(shù)據(jù)和數(shù)據(jù)分析。以下的內(nèi)容主要以為主。終端輸入導(dǎo)入相關(guān)模塊是一種類似于一維數(shù)組的對象,它由一組數(shù)據(jù)各種數(shù)據(jù)類型以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽即索引組成。如果僅傳入一個(gè)序列,則會(huì)重新索引行函數(shù)的參數(shù)參數(shù)說明用作索引的新序列。 原文鏈接 numPy pandas的數(shù)據(jù)結(jié)構(gòu)介紹 簡介 Pandas [1] 是python的一個(gè)數(shù)據(jù)分析包,最初由AQR Capital Mana...

    codercao 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<