pandas相同資料的優先順序

2021-09-25 16:56:58 字數 3037 閱讀 2212

import pandas as pd

import numpy as np

df1 = pd.dataframe()

df2 = pd.dataframe()

# 這個操作會把df1中有的資料作為最高的優先順序,df2中的資料優先順序會低一點,如果df1=np.nan會用df2中的資料

df1.combine_first(df2)

如果要檢視一列中非nan的個數可以用nunique

用法是這樣

df['b'].nunique()

求最大值和最小值所在標籤的數字索引(idxmin,idxmax)可以按照列和行,引數是axis比如df.idxmin(axis=1)

df.idxmin(), df.idxmax()

檢視df值出現的次數(value_counts())

df.value_counts()

value_counts也是pandas的頂層方法

pd.value_counts(df)

pandas檢視序列中頻繁出現的值

df.mode()

pandas處理資料的離散化(cut, qcut)

pandas中函式的鏈式用法(pipe)(我是新手,不會)

提取每個列的最大值的索引

agg: 是聚合的函式

可以這樣用df.a.agg(['mean', 'min'])

傳遞字典可以表示把這些函式應用到那些列

df.agg()

df.agg()

df.agg(['min', 'max'])

要想把agg執行的函式新增一列可以這樣

df.agg(a=('a', 'mean'), b=('b', 'max'))

anddf.agg(min_a=pd.namedagg(column='a', aggfunc='mean'))

transform方法返回乙個大小相同索引相同的資料,主要也是用來進行函式的操作

df.transform(np.abs)

df.transform(lambda x: x.abs())

df.transform('abs')

多功能的轉換

df.transform(['mean', lambda x: x.abs()])

用字典轉換指定列df.transform()

def get_map(x)

return len(str(x))

df['a'].map(get_map)

重新排序索引的方法reindex()

這個方法很神奇可以排序已知的索引,要是排序的索引不存在則會顯示nan

s.reindex(df.index.difference(['a', 'b']))

df.reindex(['a', 'b', 'c'])  預設排序的是行   還可以指定行和列

df.reindex(index=['a', 's'], columns=['one', 'two'])   為什麼index沒有s因為index是1列 columns有多列所以一般情況下都是columns

df.reindex(['a', 'b'], axis='index')

還可以用別的資料幀的index

s.reindex(df.index, axis='index')

ands.reindex_like(df)

刪除資料

df.drop(['a', 'b'], axis=0)     刪除行

df.drop(['c', 'd'], axis=1)    刪除列

重新命名df.rename(, axis='columns')

修改多索引的列名

df = pd.dataframe(,
index=pd.multiindex.from_product([['a', 'b', 'c'], [1, 2]],
names=['let', 'num']))
df.rename_axis(index=)

迭代資料

iterrows()用for迴圈

for index, row in df.iterrows():

print(i)

print(row)

我一般都是把它進行儲存資料庫的時候使用, 這個使用的時候特別像乙個字典, 你看都有index,和values

所以還有items的方法

for label, sel in df.items():

print(label)

print(sel)

如果序列是時間型別,有乙個簡單的dt方法, 我感覺這個方法很重要,後面可以接好多時間的函式

df['date'].dt.hour

df['date'].dt.date

df['date'].dt.minute

df['date'].dt.second

df['date'].dt.day

df[df['date'].dt.day==2]

df['date'].dt.year

df['date'].dt.strftime('%y/%m/%d')

df['date'].dt.components

時區轉換函式tz_localize    tz_localconvert

也可以用to_datetime()

df = pd.read_excel('d:/data/time.xlsx')

df.index = pd.to_datetime(df.index)

df.index = df.index.tz_localize('utc').tz_convert('asia/shanghai').tz_localize(none)

df.to_excel('d:/data/times.xlsx')

取最小值和最大值nsmallest()   nlargest(3)

這兩個方法比sor_values排序之後再用head查詢會快很多

df.nsmallest(3, 'a')

df.nlargest(3, ['a', 'b'])

選擇指定型別的資料

df.select_dtypes(['int64'])

python優先順序佇列 python 優先順序佇列

簡介 優先順序佇列是基於堆的,關於堆的時候可以參考文章堆,優先順序佇列就是入隊時,會分配乙個優先順序,之後出隊時,根據優先順序出列。如,入隊時 4,a 6,r 3 d 則出隊順序 6,r 4,a 3 d 優先順序佇列的python實現 class priorityqueue object def i...

的優先順序大小 需求價值與優先順序

我們會接到不同 的需求,有的 於業務部門 領導要求,有的 於使用者反饋 線上問題,有的是市場反饋建議,或者競品已支援等等。收到原始需求之後,我們怎麼知道哪些需求要做?哪些需求要優先做,哪些可以往後排?或者在需要澄清需求價值時,我們要回答哪些問題後,才算講清楚了需求價值。又如何做需求的優先順序排序。首...

Linux程序優先順序和調整優先順序

linux 是乙個多使用者 多工的作業系統,系統中通常執行著非常多的程序。但是 cpu 在乙個時鐘週期內只能運算一條指令 現在的 cpu 採用了多執行緒 多核心技術,所以在乙個時鐘週期內可以運算多條指令。但是同時運算的指令數也遠遠小於系統中的程序總數 那問題來了 誰應該先運算,誰應該後運算呢?這就需...