精華!12大Pandas配置技巧

公衆號:尤而小屋
作者:Peter
編輯:Peter

大家好,我是Peter~

在Pandas的使用過程中,除了數據,我們更多的就是和表格打交道。爲了更好地展示一份表格數據,必須前期有良好的設置。

本文介紹的是Pandas的常用配置技巧,主要根據options和setings來展開的。強推官網學習地址:https://pandas.pydata.org/pandas-docs/stable/user_guide/options.html

導入

這是一種國際慣例的導入方式!

import pandas as pd

忽略警告

因爲版本的更新,可能Pandas的某些用法在不久將會被移除,經常會出現一些警告(不是報錯),配上如下的代碼即可忽略相關的警告:

# 忽略警告
import warnings
warnings.filterwarnings('ignore')

float型數據精度

查看默認精度

默認是保留6位小數。通過下面的方式來打印當前的精度:

pd.get_option( 'display.precision')
6

修改精度

將精度設置成2位

pd.set_option( 'display.precision',2)
# 寫法2:pd.options.display.precision = 2

然後我們再次打印當前的精度則變成了2位:

pd.get_option( 'display.precision')
2

顯示行

查看顯示行數

默認顯示的行數是60

pd.get_option("display.max_rows")  # 默認是60
60

默認最少的行數是10位:

pd.get_option("display.min_rows")  # 最少顯示行
10

修改顯示行數

修改最大的顯示行數成999,然後再查看:

pd.set_option("display.max_rows",999)  # 最多顯示行數
pd.get_option("display.max_rows")
999

修改最少顯示行數:

pd.set_option("display.min_rows",20)  
pd.get_option("display.min_rows")
20

重置功能

使用重置reset_option方法後,設置就會變成默認的形式(數值):

pd.reset_option("display.max_rows")
pd.get_option("display.max_rows")  # 又恢復到60
60
pd.reset_option("display.min_rows")
pd.get_option("display.min_rows")  # 又恢復到10
10

正則功能

如果我們對多個options進行了修改設置,想同時恢復的話,使用正則表達式可以重置多條option。

在這裏表示以displacy開頭的設置全部重置:

# ^表示以某個字符開始,在這裏表示以display開始全部重置
pd.reset_option("^display")

全部重置

如果使用all,則表示對全部的設置進行重置:

pd.reset_option('all')

顯示列

既然能夠控制顯示的行數,當然也是可以控制顯示的列數

查看顯示列數

查看默認顯示的列數是20:

pd.get_option('display.max_columns')

# 另一種寫法:通過屬性的方式
pd.options.display.max_columns  
20

改變列數

修改顯示的列數成100:

# 修改成100
pd.set_option('display.max_columns',100)

查看修改後的列數:

# 查看修改後的值
pd.get_option('display.max_columns')
100

顯示所有列

如果設置成None,則表示顯示全部的列:

pd.set_option('display.max_columns',None)

重置

pd.reset_option('display.max_columns')

修改列寬

上面是查看列的數量,下面是針對每個列的寬度進行設置。單列數據寬度,以字符個數計算,超過時用省略號來表示。

默認列寬

默認的列寬是50個字符的寬度:

pd.get_option ('display.max_colwidth')
50

修改列寬

修改顯示的列寬成100:

# 修改成100
pd.set_option ('display.max_colwidth', 100)

查看顯示的列寬長度:

pd.get_option ('display.max_colwidth')
100

顯示所有列

顯示全部的列:

pd.set_option ('display.max_colwidth', None)

摺疊功能

當我們輸出數據寬度,超過了設置的寬度時,是否要摺疊。通常使用False不折疊,相反True要摺疊。

pd.set_option("expand_frame_repr", True)  # 摺疊
pd.set_option("expand_frame_repr", False)  # 不折疊

代碼段修改設置

上面介紹的各種設置,如果有修改的話都是整個環境的;我們還可以只給某個代碼塊進行臨時的設置。

跑出當前的代碼塊,則會失效,恢復到原來的設置。

假設這裏是第一個代碼塊:

print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_columns"))
60
20

這裏是第二個代碼塊:

# 當前代碼塊進行設置

with pd.option_context("display.max_rows", 20, "display.max_columns", 10):
    print(pd.get_option("display.max_rows"))
    print(pd.get_option("display.max_columns"))
20
10

這裏第三個代碼塊:

print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_columns"))
60
20

上面的例子我們可以發現:到了指定的代碼塊之外,設置無效

數字格式化

Pandas中有個display.float_format的方法,能夠對浮點型的數字進行格式化輸出,比如用千分位,百分比,固定小數位表示等。

如果其他數據類型可以轉換爲浮點數,也可以使用該方法。

The callable should accept a floating point number and return a string with the desired format of the number

千分位表示

當數據比較大的時候,希望通過千分位的形式來表示數據,一目瞭然:

df = pd.DataFrame({
    "percent":[12.98, 6.13, 7.4],
    "number":[1000000.3183,2000000.4578,3000000.2991]})
df

百分比

特殊符號

除了%號,我們還可以使用其他的特殊符號來表示:

零門檻轉換

門檻轉換是指什麼意思呢?首先這個功能的實現使用的是display.chop_threshold方法。

表示將Series或者DF中數據展示爲某個數的門檻。大於這個數,直接顯示;小於的話,用0顯示。

更改繪圖方法

默認情況下,pandas使用matplotlib作爲繪圖後端,我們可以進行設置修改:

import matplotlib.pyplot as plt
%matplotlib inline

# 默認情況
df1 = pd.DataFrame(dict(a=[5,3,2], b=[3,4,1]))
df1.plot(kind="bar")
plt.show()

更改下繪圖後端,變成強大的plotly:

# 寫法1
pd.options.plotting.backend = "plotly"

df = pd.DataFrame(dict(a=[5,3,2], b=[3,4,1]))
fig = df.plot()
fig.show()

# 寫法2
df = pd.DataFrame(dict(a=[5,3,2], b=[3,4,1]))
fig = df.plot(backend='plotly') # 在這裏指定
fig.show()

修改列頭對齊方向

默認情況,屬性字段(列頭)是靠右對齊的,我們可以進行設置。下面看一個來自官網的例子:

打印出當前設置並重置所有選項

pd.describe_option()是打印當前的全部設置,並充值所有選項。下面是部分設置選項:

配置技巧

下面總結了常用的配置,複製即可使用:

import pandas as pd  # 國際慣例

import warnings
warnings.filterwarnings('ignore')  # 忽略文中的警告

pd.set_option( 'display.precision',2)
pd.set_option("display.max_rows",999)  # 最多顯示行數
pd.set_option("display.min_rows",20)   # 最少顯示行數
pd.set_option('display.max_columns',None)  # 全部列
pd.set_option ('display.max_colwidth', 100)   # 修改列寬
pd.set_option("expand_frame_repr", True)  # 摺疊
pd.set_option('display.float_format',  '{:,.2f}'.format)  # 千分位
pd.set_option('display.float_format', '{:.2f}%'.format)  # 百分比形式
pd.set_option('display.float_format', '{:.2f}¥'.format)  # 特殊符號
pd.options.plotting.backend = "plotly"  # 修改繪圖
pd.set_option("colheader_justify","left")  # 列字段對齊方式
pd.reset_option('all')  # 重置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章