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

資訊專欄INFORMATION COLUMN

10個Python Pandas技巧,使您的工作更有效率

stormjun / 3444人閱讀

摘要:是一個廣泛用于結構化數據的包。因此,的任何變化都會導致發生變化。這是檢查值分布的命令。這也是每個人都會使用的命令。我想在這里指出兩個技巧。另一個技巧是處理混合在一起的整數和缺失值。將所有浮點數舍入為整數。

Pandas是一個廣泛用于結構化數據的Python包。本文將介紹一些讀者可能以前不知道的很實用的技巧。

read_csv

每個人都知道這個命令。但是讀取的數據很大,可以嘗試添加這個參數:nrows = 5以便在實際加載整個表之前讀取表的一小部分。然后你可以通過選擇錯誤的分隔符來避免錯誤(它可能不總是以逗號分隔)?;蛘?,您可以在linux中使用"head"命令檢查任何文本文件中的前5行(比如說):head -n 5 data.txt

然后,您可以通過使用df.columns.tolist()提取所有列來提取列列表,然后添加usecols = ["c1","c2",...]參數來加載您需要的列。此外,如果您知道幾個特定列的數據類型,則可以添加參數dtype = {"c1":str,"c2":int,...},以便加載更快。這個參數的另一個優點是,如果您有一個同時包含字符串和數字的列,那么將它的類型聲明為string是一個很好的實踐,這樣在試圖使用該列作為鍵合并表時就不會出現錯誤。

select_dtypes

如果數據預處理必須在Python中完成,那么這個命令可以節省你一些時間。讀入表后,每列的默認數據類型可以是bool,int64,float64,object,category,timedelta64或datetime64。您可以先用df.dtypes.value_counts(),要了解數據幀的所有可能數據類型,然后執行df.select_dtypes(include=["float64", "int64"])

選擇僅具有數字特征的子數據幀。

copy

如果您還沒有聽說過,這是一個重要的命令。如果執行以下命令:

import pandas as pd
df1 = pd.DataFrame({ "a":[0,0,0], "b": [1,1,1]})
df2 = df1
df2["a"] = df2["a"] + 1
df1.head()

你會發現df1已經改變了。這是因為df2 = df1沒有復制df1并將其分配給df2,而是設置指向df1的指針。因此,df2的任何變化都會導致df1發生變化。要解決這個問題,你可以使用任何一種方法

df2 = df1.copy()

from copy import deepcopy
df2 = deepcopy(df1)
map

這個命令可以很容易的進行數據轉換。首先定義一個字典,其中"keys"是舊值,"values"是新值。

level_map = {1: "high", 2: "medium", 3: "low"}
df["c_level"] = df["c"].map(level_map)

一些例子:True, False to 1, 0 (for modeling); defining levels; user defined lexical encodings.

apply or not apply?

如果我們想創建一個包含其他幾列作為輸入的新列,那么apply函數有時非常有用。

def rule(x, y):
    if x == "high" and y > 10:
         return 1
    else:
         return 0
df = pd.DataFrame({ "c1":[ "high" ,"high", "low", "low"], "c2": [0, 23, 17, 4]})
df["new"] = df.apply(lambda x: rule(x["c1"], x["c2"]), axis =  1)
df.head()

在上面的代碼中,我們定義了一個帶有兩個輸入變量的函數,并使用apply函數將它應用于列"c1"和"c2"。

“應用”的問題是它有時太慢了。如果你想計算兩列“c1”和“c2”的最大值,你當然可以這樣做

df["maximum"] = df.apply(lambda x: max(x["c1"], x["c2"]), axis = 1)

但你會發現它比這個命令慢得多:

df["maximum"] = df[["c1","c2"]].max(axis =1)

愿碼提示:如果您可以使用其他內置函數完成相同的工作(它們通常更快),請不要使用apply。例如,如果要將列"c"舍入為整數,請執行round(df ["c"],0)或df ["c"]。round(0)而不是使用apply函數:df.apply(lambda x: round(x["c"], 0), axis = 1)。

value counts

這是檢查值分布的命令。例如,如果您想檢查“c”列中每個值的可能值和頻率,您可以執行此操作:df["c"].value_counts()

還有就是它的一些有用的技巧/參數:
A. normalize = True:如果您想檢查頻率而不是計數。
B. dropna = False:如果您還想在統計中包含缺失的值。
C. df["c"].value_counts().reset_index():如果希望將stats表轉換為panda數據aframe并對其進行操作。
D. df["c"].value_counts().reset_index().sort_values(by="index"):在"c"列中顯示按不同值排序的統計信息,而不是count。

number of missing values

構建模型時,您可能希望排除具有太多缺失值的行/具有所有缺失值的行。您可以使用.isnull()和.sum()來計算指定列中缺失值的數量。

import pandas as pd
import numpy as np
df = pd.DataFrame({ "id": [1,2,3], "c1":[0,0,np.nan], "c2": [np.nan,1,1]})
df = df[["id", "c1", "c2"]]
df["num_nulls"] = df[["c1", "c2"]].isnull().sum(axis=1)
df.head()
select rows with specific IDs

在SQL中,我們可以使用SELECT * FROM ... WHERE ID("A001","C022",...)來獲取具有特定ID的記錄。如果你想用熊貓做同樣的事情,你可以做到

df_filter = df["ID"].isin(["A001","C022",...])
df[df_filter]
Percentile groups

您有一個數字列,并希望將該列中的值分類為組,例如前5%進入組1,5-20%進入組2,20%-50%進入組3,將底部50%歸入組4當然,你可以用pandas.cut來做,但我想在這里提供另一種選擇:

import numpy as np
cut_points = [np.percentile(df["c"], i) for i in [50, 80, 95]]
df["group"] = 1
for i in range(3):
    df["group"] = df["group"] + (df["c"] < cut_points[i])
# or <= cut_points[i]

這是快速運行(沒有使用應用功能)。

to_csv

這也是每個人都會使用的命令。我想在這里指出兩個技巧。第一個是:print(df[:5].to_csv())

您可以使用此命令打印出準確寫入文件的前五行。

另一個技巧是處理混合在一起的整數和缺失值。如果列包含缺失值和整數,則數據類型仍將是float而不是int。導出表時,可以添加float_format ="%。0f"將所有浮點數舍入為整數。如果您只想要所有列的整數輸出,請使用此技巧 - 您將擺脫所有惱人的".0"。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43761.html

相關文章

  • 15Python庫,讓你學習數據科學輕松

    摘要:在本節中,我們將看到一些最流行和最常用的庫,用于機器學習和深度學習是用于數據挖掘,分析和機器學習的最流行的庫。愿碼提示網址是一個基于的框架,用于使用多個或進行有效的機器學習和深度學習。 showImg(https://segmentfault.com/img/remote/1460000018961827?w=999&h=562); 來源 | 愿碼(ChainDesk.CN)內容編輯...

    W4n9Hu1 評論0 收藏0
  • [譯]從列表或字典創建Pandas的DataFrame對象

    摘要:在這些情況下,了解如何從標準列表或字典創建會很有幫助。大多數人會注意到列的順序看起來不對。這個問題出現的原因是標準的字典不保留其鍵的順序。列表從創建的另一個選擇是將數據包含在列表結構中。 介紹 每當我使用pandas進行分析時,我的第一個目標是使用眾多可用選項中的一個將數據導入Pandas的DataFrame 。對于絕大多數情況下,我使用的 read_excel , read_csv ...

    zhaochunqi 評論0 收藏0
  • 忘記API 使用Beautiful Soup進行Python Scraping,從Web導入數據文件

    摘要:忘記使用進行,從導入數據文件第部分對于每個網站而言,并不總是適合您,但將永遠與您保持聯系以從任何網站收集任何類型的數據。非資源讓我們拿一個維基百科頁面進行報廢。請求它旨在被人類用于與語言進行通信。使用標簽,我們將告訴保護我們的數據。忘記API使用Beautiful Soup進行Python Scraping,從Web導入數據文件:第2部分 對于每個網站而言,API并不總是適合您,但Be...

    馬龍駒 評論0 收藏0
  • 忘記API 使用Beautiful Soup進行Python Scraping,從Web導入數據文件

    摘要:忘記使用進行,從導入數據文件第部分對于每個網站而言,并不總是適合您,但將永遠與您保持聯系以從任何網站收集任何類型的數據。非資源讓我們拿一個維基百科頁面進行報廢。請求它旨在被人類用于與語言進行通信。使用標簽,我們將告訴保護我們的數據。忘記API使用Beautiful Soup進行Python Scraping,從Web導入數據文件:第2部分 對于每個網站而言,API并不總是適合您,但Be...

    wayneli 評論0 收藏0
  • 收藏 | 10可以快速用Python進行數據分析的小技巧

    摘要:函數將單元格內容以形式呈現。自動評論代碼自動注釋單元格中的選定行,再次命中組合將取消注釋相同的代碼行。如果需要恢復整個已刪除的單元格,請按或撤消刪除單元格。 showImg(https://segmentfault.com/img/remote/1460000019599210); 編譯:小七、蔣寶尚 一些小提示和小技巧可能是非常有用的,特別是在編程領域。有時候使用一點點黑客技術,既可...

    silvertheo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<