日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pandas DataFrame 使用技巧

發布時間:2024/1/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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'] df

1 添加進度條(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在其他循壞體種也可以展示進度,以下是一個簡單例子:

for i in tqdm(range(5)):print(i)

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'指定編碼格式,即可輕松解決這個問題。

df.to_csv('data.csv', encoding='utf_8_sig')

總結

以上是生活随笔為你收集整理的Pandas DataFrame 使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。