分組操作
GroupBy
-
DataFrame.groupby
DataFrame.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
Aggregation聚合(匯集)
DataFrame.aggregate
DataFrame.aggregate(func,axis = 0,* args,** kwargs )
Applying(函數應用)
DataFrame.apply
DataFrame.apply(func,axis = 0,broadcast = None,raw = False,reduce = None,result_type = None,args =(),** kwds )
Transformation(轉換)
分組或列上的轉換返回索引大小與被分組的索引相同的對象。轉換應該返回與數據大小相同的結果。
DataFrame.transform
DataFrame.transform(func, *args, **kwargs)
Categorical(分類)
pandas.Categorical
pandas.Categorical(values, categories=None, ordered=None, dtype=None, fastpath=False)
-
創建
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 | 納秒 |
-
建立
-
轉換
讀寫檔案
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)
chunksize讀取大文件:
https://blog.csdn.net/zm714981790/article/details/51375475
https://blog.csdn.net/u012347642/article/details/78555132
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:
輸出csv檔: