paipai教你pandas(1) DataFrame的列維度操作

2021-03-02 paipai教你打代碼

      paipai教你pandas教程系列的第1篇文章,DataFrame是表格型的數據類型,有列和行兩個維度,本篇教程講解pandas中DataFrame對列維度上的操作,包括列的選取、新增和刪除。

       今天paipai在使用pandas時,遇到了第一個問題,從一份Excel文件中讀取數據,構建為一個DataFrame對象,但是數據中的屬性欄位很多,需要對一些欄位進行取捨,paipai處理完數據之後呢,對Dataframe的列操作,整理了一下,在這裡分享給大家。

      為了讓大家理解起來更直觀明了,paipai隱去複雜的列名和數值,用簡單的字母來代替。假設我們的數據如下,並構建成DataFrame。

import pandas as pddata={    'col1':[11,21,31,41,51],    'col2':[12,22,32,42,52],    'col3':[13,23,33,43,53],    'col4':[14,24,34,44,54],    'col5':[15,25,35,45,55]}df = pd.DataFrame(data)

在Jupyter中可以看到df的情況:

下面介紹對列操作的方法

1、DataFrame 列選取,主要有四種方式

1.1) 第一種方法是通過frame['col']的方法來取列,傳入的參數是欄位名稱,如果要取多個欄位的值,可以傳入多個欄位名稱的數組,例如['col1', 'col2']。

1.2) 第二種方法是類似取對象屬性的方法來取值,例如frame.col這樣,paipai這裡要提醒各位小夥伴,第二種方法對列名稱有要求,要求是符合python變量命名規範的,就像對象屬性的命名也要符合python對象的規範一樣。

1.3) loc和iloc函數,loc函數參數傳的是欄位名稱,iloc是欄位的索引。其實loc和iloc在取值上面還有很多好用的方法,我們在後續的文章中會進行介紹,這裡先只介紹列取值上的應用。

2、DataFrame列刪除

2.1 通過del關鍵詞來進行刪除

2.2通過drop方法來刪除

df = df.drop(columns='col1')

這兩種方法有什麼區別呢,del刪除是直接在原DataFrame上直接進行操作,而drop方法則不會對原來DataFrame進行修改,返回一個新的DataFrame,除非是將drop方法的inplace參數設置為True,則會直接在原DataFrame上進行刪除。paipai在這裡留個小作業,大家可以想一下,當設置inplace參數時,drop函數的返回值有什麼區別?

3、DataFrame新增列

DataFrame新增列,按照兩種情況,分別是簡單賦值和複雜賦值

3.1 對列的賦值比較簡單,比如單一值,已有的數組等,在這裡介紹2種方法:

# 第一種直接將數組賦值到新欄位df['col6'] = [1,2,3,4,5]# 第二種insert方法# 參數1是插入列的位置# 參數2是欄位為列名# 參數3是列的值 df.insert(0,'col7',[1,2,3,4,5])

3.2 當對新增列的賦值邏輯比較複雜,需要根據其他列的值進行計算等,可以將複雜的計算邏輯寫在一個函數中,然後通過apply()方法進行計算,下面通過一個例子來體會一下。

比如我們新增列的值,是要根據需要col1的值加上col2的值,我們先寫一個相加的函數

def sum_number(num1, num2):    return num1 + num2

然後使用apply方法,其每一行col6的值為col1和col2兩列值的和

df['col6'] = df.apply(lambda x: sum_number(x['col1'], x['col2']), axis=1)

該DataFrame更新如下:

 



相關焦點

  • Python-Pandas安裝--Series結構和DataFrame結構
    3.使用pandas也可以像使用SQL語句一樣,進行相應的連結操作 Pandas的安裝 如果要使用Pandas庫,首先要進行安裝。 1)首先打開cmd終端,輸入pip install pandas(這樣可能會因為超時導致安裝失敗,不妨試一下pip --default-time=10000 install pandas)2)其實中間安裝失敗很多次,我也找了其他的解決方案,如果方法一對你來說不可取,那麼就看方法二吧,百度搜索(原文地址: http://www.wsmee.com
  • 什麼是Pandas的DataFrame?
    DateFrame特點DataFrame中面向行和面向列的操作基本是平衡的。DataFrame中的數據是以一個或多個兩維塊存放的(而不是列表、字典或別的一維數據結構)。3.創建DataFrame最常用的一種是直接傳入一個由等長列表或NumPy數組組成的字典:In [33]: data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9
  • Pandas系列 - DataFrame操作
    概覽pandas.DataFrame創建DataFrame列選擇列添加
  • Pandas數據結構:DataFrame
    剛剛接觸pandas的朋友,想了解數據結構,就一定要認識DataFrame,接下來給大家詳細介紹!, 18],"city": ["BeiJing", "TianJin", "ShenZhen"]}print(data)print("")frame = pd.DataFrame(data) # 創建DataFrame
  • 數據集的「乾坤大挪移」:如何使pandas.Dataframe從行式到列式?
    圖源:unsplash如何將數據集從行式變為列式?有很多種方法可以做到這一點,但pandas的melt()方法是其中最靈活的一種,你只需要學好這種就足夠了。本文將傳授給你數據集的「乾坤大挪移」大法,使用pd.melt()或melt方法使pandas. dataframe發生形變。一起來看看吧!行式vs寬式數據集如果我們將一個行式數據集與列式數據集進行比較,最容易理解行式數據集是什麼樣?
  • Pandas-DataFrame基礎知識點總結
    根據字典創建data = {    'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],    'year':[2000,2001,2002,2001,2002],    'pop':[1.5,1.7,3.6,2.4,2.9]}frame = pd.DataFrame(data)frame#輸出    pop state
  • Python數據分析 | 第五章 Pandas入門之Series和DataFrame
    5.1 pandas的數據結構介紹要使用pandas,你首先就得熟悉它的兩個主要數據結構:Series和DataFrame。雖然它們並不能解決所有問題,但它們為大多數應用提供了一種可靠的、易於使用的基礎。
  • 【串講總結】array, list, tensor,Dataframe,Series之間互相轉換總結
    這些主要包括:Dataframe、Series(pandas), array(numpy), list, tensor(torch)二、定義2.1 Dataframe和Series這裡簡單介紹一下這兩個結構。
  • pandas | 詳解DataFrame中的apply與applymap方法
    今天是pandas數據處理專題的第5篇文章,我們來聊聊pandas的一些高級運算。在上一篇文章當中,我們介紹了panads的一些計算方法,比如兩個dataframe的四則運算,以及dataframe填充Null的方法。今天這篇文章我們來聊聊dataframe中的廣播機制,以及apply函數的使用方法。
  • pandas入門:Series、DataFrame、Index基本操作都有了!
    創建Series對象的函數是Series,它的主要參數是data和index,其基本語法格式如下。class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)data:接收array或dict。表示接收的數據。
  • Pandas常用的兩種數據類型之「DataFrame」
    1.列操作獲取列增加(修改)列:df[列索引] = 列數據刪除列del df[列索引]df.pop(列索引)df.drop(列索引或數組)2.行操作3.行列混合操作:說明:In [177]:# 1.列操作# 語法:d[索引]# df=pd.DataFrame({"A":[1,2,3],"B":[4,5,6],"C":[7,8,9]})# 注意,在列索引的時候,也應該使用loc和iloc在對位置和索引名字進行區分# 為了操作方便,在使用dataframe多數都是在處理二維數據,都有列標籤的名字# 默認傳入的標籤都是索引名字# display(df)
  • R語言 | 數據框data.frame操作一網打盡
    數據框的計算,按某列求平均值 (數據透視表)數據框(data.frame)在R中使用的十分廣泛。只要你用read.table輸入數據,基本都是data.frame類別的數據。Data Frame一般被翻譯為數據框,就像是R中的Excel表,由行和列組成。
  • pandas:Series , Data Frame , Panel
    列可以是不同的類型,也可以是相同的類型。它是最常用的pandas對象之一,可接受不同類型的輸入,如Dict of 1D ndarray、list、Dict或Series;2-D numpy.ndarray;有組織的或有記錄的序列。
  • python數據分析專題 (12):DataFrame
    DataFrame既有行索引也有列索引,pandas中的DataFrame類似於R中的data.frame數據框,屬於二維數據。是數據分析中最為常用的數據類型。創建DataFrame可以使用pandas包中的DataFrame()函數生成DataFrame數據結構。有多種方式,可以直接從python的字典進行轉換,也可以從ndarry生成。
  • PandaSQL:一個讓你能夠通過SQL語句進行pandas的操作的python包
    如果你熟練的使用SQL,那麼這篇文章將介紹一種更直接、簡單的使用Pandas處理大多數數據操作案例。假設你對SQL非常的熟悉,或者你想有更可讀的代碼。或者您只是想在dataframe上運行一個特殊的SQL查詢。或者,也許你來自R,想要一個sqldf的替代品。
  • Python:Pandas的DataFrame如何按指定list排序
    前言寫這篇文章的起由是有一天微信上一位朋友問到一個問題,問題大體意思概述如下:現在有一個pandas的Series和一個python的list,想讓Series按指定的list進行排序,如何實現?這個問題的需求用流程圖描述如下:我思考了一下,這個問題解決的核心是引入pandas的數據類型「category」,從而進行排序。在具體的分析過程中,先將pandas的Series轉換成為DataFrame,然後設置數據類型,再進行排序。思路用流程圖表示如下:
  • PANDAS: 新手教程 一
    titanic_data.sample(5)3.使用shape獲取數據維度一旦我們有了數據,我們就需要知道我們要處理的行或列的數量,而Pandas的shape API提供的正是這些。讓我們看看# dataframe的形狀,注意結尾沒有括號,因為它是dataframe的屬性titanic_data.shape(891, 12)4.使用info( )查看數據摘要讓我們先看看這個的輸出titanic_data.info()正如你所看到的,「info」提供了一個很好的數據摘要,讓我們一個一個地了解它。
  • pandas | 使用pandas進行數據處理——DataFrame篇
    今天是pandas數據處理專題的第二篇文章,我們一起來聊聊pandas當中最重要的數據結構——DataFrame。比如在上一篇驗證PCA降維效果的文章當中,我們從.data格式的文件當中讀取了數據。該文件當中列和列之間的分隔符是空格,而不是csv的逗號或者是table符。我們通過傳入sep這個參數,指定分隔符就完成了數據的讀取。
  • 關於Pandas數據處理你不知道的技巧!
    >>> new dataframe shape: (3756, 28)old dataframe shape: (5043, 28)因此,刪除任何列中包含NA值的行都會減少近1300行。
  • 直接保存 DataFrame 表格到本地,這個「騷操作」你還不知道?
    保存圖片,你可能用的多。但是保存這個表格,你估計就不一定知道了。為什麼需要將df_new保存在本地呢?其實提問者是為了將表格保存在本地,後面需要完成自動化群發消息的操作,這樣一來,你不僅僅可以發圖片,現在還可以發表格了,是不是很舒服?那麼,這樣一個操作,應該怎麼完成呢?下面我為大家慢慢講述。