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 採用了多執行緒 多核心技術,所以在乙個時鐘週期內可以運算多條指令。但是同時運算的指令數也遠遠小於系統中的程序總數 那問題來了 誰應該先運算,誰應該後運算呢?這就需...