pandas[2]

分組操作

GroupBy
參數 描述
by 映射,功能,標籤或標籤列表,用於確定groupby的組。如果by是函數,則調用對象索引的每個值。如果傳遞了dict或Series,則將使用Series或dict VALUES來確定組(系列的值首先對齊;請參閱.align()方法)。如果傳遞了ndarray,則使用這些值來確定組。標籤或標籤列表可以通過列傳遞到組self。請注意,元組被解釋為(單個)鍵。
axis int,默認值為0
level int,level name或其序列,默認為None,如果軸是MultiIndex(分層),則按特定級別或級別分組
as_index boolean,默認為True,對於聚合輸出,返回以組標籤作為索引的對象。僅與DataFrame輸入相關。as_index = False實際上是“SQL風格”的分組輸出
sort 布爾值,默認為True,對組鍵進行排序。關閉它可以獲得更好的性能。請注意,這不會影響每個組內的觀察順序。groupby保留每個組中的行順序。
group_keys 布爾值,默認為True,調用apply時,將組鍵添加到索引以標識片段
squeeze boolean,默認為False,如果可能,減少返回類型的維度,否則返回一致類型
observe 布爾值,默認為False,這僅適用於任何groupers屬於分類如果為真,如果為False:顯示分類groupers的所有值。

GroupBy 可以將數據分組以便後續操作。

簡單示例:GroupBy
使用seaborn下載數據 GroupBy可以用於迭代 以'key'columns分組將星期分組各組數量
套用計算方法(groupby不能直接套用numpy方法)

只取tip列
多列分組
取得將day的sun與sat改為hailday的數組 sun與sat改為hailday的數組
自訂義分組
將索引重新對應 多重索引資料建立 多重索引資料分組 若要按index可以使用.T轉置資料

Aggregation聚合(匯集)

DataFrame.aggregate
DataFrame.aggregate(func,axis = 0,* args,** kwargs )
aggregate操作

Applying(函數應用)

DataFrame.apply
DataFrame.apply(func,axis = 0,broadcast = None,raw = False,reduce = None,result_type = None,args =(),** kwds )
建立數據 apply操作1 apply操作2 apply的lambda操作(x=a,y=10,z=0)

Transformation(轉換)

分組或列上的轉換返回索引大小與被分組的索引相同的對象。轉換應該返回與數據大小相同的結果。
DataFrame.transform
DataFrame.transform(func, *args, **kwargs)
建立數據 transform操作1 transform操作2

Categorical(分類)

pandas.Categorical
pandas.Categorical(values, categories=None, ordered=None, dtype=None, fastpath=False)

  • 創建
    創建分類1 創建分類2 有序分類排序 分類屬性操作

string(字串)

Pandas的字串處理大部分接受正則表達式(另一個連結),Pandas提供了很多字串處理函數,如下:

String handling
Series.str.capitalize() 將Series / Index中的字符串轉換為大寫。
Series.str.cat([others, sep, na_rep, join]) 使用給定的分隔符連接Series / Index中的字符串。
Series.str.center(width[, fillchar]) 使用附加字符填充系列/索引中字符串的左側和右側。
Series.str.contains(pat[, case, flags, na, …]) 測試模式或正則表達式是否包含在系列或索引的字符串中。
Series.str.count(pat[, flags]) 計算系列/索引的每個字符串中模式的出現次數。
Series.str.decode(encoding[, errors]) 使用指定的編碼解碼系列/索引中的字符串。
Series.str.encode(encoding[, errors]) 使用指定的編碼對系列/索引中的字符串進行編碼。
Series.str.endswith(pat[, na]) 測試每個字符串元素的結尾是否與模式匹配。
Series.str.extract(pat[, flags, expand]) 對於系列中的每個主題字符串,從正則表達式pat的第一個匹配中提取組。
Series.str.extractall(pat[, flags]) 對於系列中的每個主題字符串,從正則表達式pat的所有匹配中提取組。
Series.str.find(sub[, start, end]) 返回Series / Index中每個字符串中的最低索引,其中子字符串完全包含在[start:end]之間。
Series.str.findall(pat[, flags]) 在系列/索引中查找所有出現的模式或正則表達式。
Series.str.get(i) 從指定位置的每個組件中提取元素。
Series.str.index(sub[, start, end]) 返回每個字符串中的最低索引,其中子字符串完全包含在[start:end]之間。
Series.str.join(sep) 使用傳遞的分隔符連接包含在Series / Index中的元素的列表。
Series.str.len() 計算系列/索引中每個字符串的長度。
Series.str.ljust(width[, fillchar]) 使用附加字符填充系列/索引中字符串的右側。
Series.str.lower() 將Series / Index中的字符串轉換為小寫。
Series.str.lstrip([to_strip]) 從左側的系列/索引中的每個字符串中刪除空格(包括換行符)。
Series.str.match(pat[, case, flags, na, …]) 確定每個字符串是否與正則表達式匹配。
Series.str.normalize(form) 返回Series / Index中字符串的Unicode普通表單。
Series.str.pad(width[, side, fillchar]) 在系列/索引中填充字符串,並在指定的一側添加一個字符。
Series.str.partition([pat, expand]) 在第一次出現sep時拆分字符串,並返回包含分隔符之前的部分的3個元素,分隔符本身以及分隔符之後的部分。
Series.str.repeat(repeats) 按指定的次數複製系列/索引中的每個字符串。
Series.str.replace(pat, repl[, n, case, …]) 用一些其他字符串替換Series / Index中出現的pattern / regex。
Series.str.rfind(sub[, start, end]) 返回Series / Index中每個字符串中的最高索引,其中子字符串完全包含在[start:end]之間。
Series.str.rindex(sub[, start, end]) 返回每個字符串中的最高索引,其中子字符串完全包含在[start:end]之間。
Series.str.rjust(width[, fillchar]) 使用附加字符填充系列/索引中字符串的左側。
Series.str.rpartition([pat, expand]) 在最後一次出現sep時拆分字符串,並返回包含分隔符之前的部分的3個元素,分隔符本身以及分隔符之後的部分。
Series.str.rstrip([to_strip]) 從右側的系列/索引中的每個字符串中刪除空格(包括換行符)。
Series.str.slice([start, stop, step]) 從系列/索引中的每個元素切片子串
Series.str.slice_replace([start, stop, repl]) 用另一個值替換字符串的位置切片。
Series.str.split([pat, n, expand]) 在給定的分隔符/分隔符周圍拆分字符串。
Series.str.rsplit([pat, n, expand]) 通過給定的分隔符字符串拆分Series / Index中的每個字符串,從字符串的末尾開始並向前工作。
Series.str.startswith(pat[, na]) 測試每個字符串元素的開頭是否與模式匹配。
Series.str.strip([to_strip]) 從左側和右側剝離系列/索引中每個字符串的空白(包括換行符)。
Series.str.swapcase() 將Series / Index中的字符串轉換為swapcased。
Series.str.title() 將系列/索引中的字符串轉換為標題。
Series.str.translate(table[, deletechars]) 通過給定的映射表映射字符串中的所有字符。
Series.str.upper() 將Series / Index中的字符串轉換為大寫。
Series.str.wrap(width, **kwargs) 將Series / Index中的長字符串換行,以長度小於給定寬度的段落格式化。
Series.str.zfill(width) 使用0填充Series / Index中字符串的左側。
Series.str.isalnum() 檢查Series / Index中每個字符串中的所有字符是否為字母數字。
Series.str.isalpha() 檢查Series / Index中每個字符串中的所有字符是否都是字母。
Series.str.isdigit() 檢查Series / Index中每個字符串中的所有字符是否為數字。
Series.str.isspace() 檢查Series / Index中每個字符串中的所有字符是否都是空格。
Series.str.islower() 檢查Series / Index中每個字符串中的所有字符是否都是小寫。
Series.str.isupper() 檢查Series / Index中每個字符串中的所有字符是否都是大寫。
Series.str.istitle() 檢查Series / Index中每個字符串中的所有字符是否都是標題。
Series.str.isnumeric() 檢查Series / Index中每個字符串中的所有字符是否都是數字。
Series.str.isdecimal() 檢查Series / Index中每個字符串中的所有字符是否為十進制。
Series.str.get_dummies([sep]) 用sep拆分Series中的每個字符串,並返回一個虛擬/指示變量框。

範例

Date(日期)

python的Date和Time功能
python的Date和Time官方文檔1
python的Date和Time官方文檔2
numpy日期
pandas時間序列/日期功能

  • 時間類型
    時間類型

  • 時間偏移週期

別名 描述
B 工作日頻率
C 自定義工作日頻率
D 日曆日頻率
W 每週頻率
M 月末頻率
SM 半月結束頻率(15日和月末)
BM 營業月結束頻率
CBM 自定義營業月結束頻率
MS 月開始頻率
SMS 半月開始頻率(第1和第15)
BMS 營業月開始頻率
CBMS 自定義營業月開始頻率
Q 四分之一結束頻率
BQ 業務季度結束頻率
QS 季度開始頻率
BQS 業務季開始頻率
A, Y 年終頻率
BA, BY 業務年度結束頻率
AS, YS 年開始頻率
BAS, BYS 營業年度開始頻率
BH 營業時間頻率
H 每小時頻率
T, min 每分鐘的頻率
S 每秒頻率
L, ms 毫秒
U, us 微秒
N 納秒
  • 建立
    創建日期1 創建日期2

  • 轉換
    轉換日期1 轉換日期2

讀寫檔案

Pandas讀寫文檔

Format Type Data Description Reader Writer
text CSV read_csv to_csv
text JSON read_json to_json
text HTML read_html to_html
text Local clipboard read_clipboard to_clipboard
binary MS Excel read_excel to_excel
binary HDF5 Format read_hdf to_hdf
binary Feather Format read_feather to_feather
binary Parquet Format read_parquet to_parquet
binary Msgpack read_msgpack to_msgpack
binary Stata read_stata to_stata
binary SAS read_sas
binary Python Pickle Format read_pickle to_pickle
SQL SQL read_sql to_sql
SQL Google Big Query read_gbq to_gbq
csv

1)讀
pandas.read_csv
pandas.read_csv(filepath_or_buffer, sep=’, ‘, delimiter=None, header=‘infer’, names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression=‘infer’, thousands=None, decimal=b’.’, lineterminator=None, quotechar=’"’, quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

2)寫
DataFrame.to_csv
DataFrame.to_csv(path_or_buf=None, sep=’, ‘, na_rep=’’, float_format=None, columns=None, header=True, index=True, index_label=None, mode=‘w’, encoding=None, compression=None, quoting=None, quotechar=’"’, line_terminator=’\n’, chunksize=None, tupleize_cols=None, date_format=None, doublequote=True, escapechar=None, decimal=’.’)
Series.to_csv
Series.to_csv(path=None, index=True, sep=’, ‘, na_rep=’’, float_format=None, header=False, index_label=None, mode=‘w’, encoding=None, compression=None, date_format=None, decimal=’.’)

3)讀寫範例
原始資料:
原始資料:

讀取資料:
讀取資料

轉成直式:
轉成直式

刪除重複值、排序、計數:

np.unique(df,return_counts=True)
np.unique(刪除重覆值),return_counts=True(計數)
輸出一個元組(整理後的值,對應的計數)

刪除重複值、排序、計數

加上columns:
加上columns標題

輸出csv檔:
輸出csv檔 輸出完成

猜你喜欢

转载自blog.csdn.net/qq_33768941/article/details/86512778