Pandas DataFrame 使用技巧
Pandas是一個強大的分析結構化數據的工具集;它的使用基礎是Numpy(提供高性能的矩陣運算);用于數據挖掘和數據分析,同時也提供數據清洗功能。Pandas是Python的核心數據分析支持庫,提供了快速、靈活、明確的數據結構,旨在簡單、直觀地處理關系型、標記型數據。Pandas的目標是成為 Python數據分析實踐與實戰的必備高級工具,其長遠目標是成為最強大、最靈活、可以支持任何語言的開源數據分析工具。經過多年不懈的努力,Pandas離這個目標已經越來越近了。
接下來是在使用Pandas處理數據時的一些小技巧,也許能在日常工作數據處理中幫助提高效率:
首先創建一個DataFrame:
import pandas as pd df = pd.DataFrame([{'a':1, 'b':2, 'c':3}]).T.reset_index() df.columns = ['label','value'] df1 添加進度條(tqdm)
from tqdm import tqdm tqdm.pandas(desc="Process Bar") df['pair'] = df.progress_apply(lambda x: (x['label'],x['value']), axis=1) df
tqdm在其他循壞體種也可以展示進度,以下是一個簡單例子:
2 一列拓展多列
df[['label_2','_value_2']] = df.apply(lambda x: x['pair'], axis=1, result_type='expand') df雖然pd.DataFrame和pd.Series兩種數據結構在apply方法的使用上很相似,但是axis,result_type這些參數僅適用于pd.DataFrame。
3 dask并行計算
import dask.dataframe as dd from dask.diagnostics import ProgressBar ddf = df.copy()with ProgressBar(): # 添加進度條ddf[['label_3','_value_3']] = dd.from_pandas(ddf, npartitions=8).map_partitions(lambda df: \df.apply(lambda x: x['pair'], axis=1, result_type="expand"), meta={0:'str',1:'f8'}).compute() ddf
dask能夠使pandas的DataFrame批量進行計算時采用多內核并行計算,充分利用CPU資源以提高運行速度。
① ProgressBar可為計算提供進度條。
② npartitions為并行計算線程數,一般為計算機核心數。
③ 用dask的apply函數并設置result_type="expand"時,需要一個meta字典,用于明確每個列的數據類型,例如str, int或者 f8。
4 保存CSV亂碼問題
當我們想要將DataFrame保存成csv文件時,如果其中有中文那么經常會發現打開后亂碼。例如上面這個DataFrame,我們用df.to_csv('data.csv')進行文件保存,打開后發現變成了這樣:
保存文件時通過增加encoding='utf_8_sig'指定編碼格式,即可輕松解決這個問題。
總結
以上是生活随笔為你收集整理的Pandas DataFrame 使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core使用Hangfi
- 下一篇: 在UE5中创建一个受战锤启发的角色