公衆號:尤而小屋
作者: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') # 重置