大家好,我是老吳,大家也可以叫我吳同學,再小一點的朋友也可以叫我吳師兄,歡迎大家跟我一起走進資料分析的世界,一起學習!
感興趣的朋友可以關注我或者我的資料分析專欄,里面有許多優質的文章跟大家分享哦,
前期回顧:
學習pandas全套代碼【超詳細】資料查看、輸入輸出、選取、集成、清洗、轉換、重塑、數學和統計方法、排序
學習pandas全套代碼【超詳細】分箱操作、分組聚合、時間序列、資料可視化
自從我整理完這兩篇關于pandas的博文之后,我從博文的閱讀以及收藏的資料中不難得知,大家對于這類實用性的博文的認可,同時我自己在作業中有時也會發現,即使我整理了這么多有關于pandas的內容,但或多或少還是會遺漏一些知識點,畢竟pandas實在是太多實用的功能了,
那么今天這篇博文呢,我進一步整理了前面這兩篇博文沒有提到的或者說講的不夠具體的實用技能,大家趕緊收藏起來吧,我保證你們遲早會用到,
目錄
- 1 輸出表格的各種設定
- 1.1 指定sheet輸出
- 1.2 指定缺失值填充
- 1.3 無窮大表示法
- 1.4 浮點數字格式
- 1.5 只輸出指定列
- 1.6 不帶表頭
- 1.7 不帶索引
- 1.8 指定索引
- 1.9 選取特定范圍的索引
- 1.10 指定編碼
- 1.11 使用指定引擎
- 1.12 凍結指定行和列
- 2 將多個dataframe保存到同一個表格下的不同sheet中
- 3 選取、修改或洗掉具有指定條件的資料
- 3.1 選取、修改或洗掉具有指定條件的行
- 3.2 選取、修改或洗掉具有指定條件的列
- 3.3 洗掉含有空值的行或列
- 4 添加一行資料
- 5 修改資料型別
- 5.1 對指定條件的資料進行修改
- 5.2 對指定資料型別的資料進行修改
- 6 資料表格美顏
- 結束語
1 輸出表格的各種設定
1.1 指定sheet輸出
df.to_excel('test.xlsx', sheet_name='laowu')
1.2 指定缺失值填充
df.to_excel('test.xlsx', na_rep='-')
1.3 無窮大表示法
df.to_excel('test.xlsx', inf_rep='inf')
1.4 浮點數字格式
# 小數點后保留兩位小數
df.to_excel('test.xlsx', float_format="%.2f")
1.5 只輸出指定列
df.to_excel('test.xlsx', columns=['column1', 'column2', 'column3'])
1.6 不帶表頭
# 不帶表頭
df.to_excel('test.xlsx', header=False)
1.7 不帶索引
df.to_excel('test.xlsx', index=False)
1.8 指定索引
df.to_excel('test.xlsx', index_label=['team', 'name'])
1.9 選取特定范圍的索引
# 從第幾行,第幾列開始
df.to_excel('test.xlsx', startrow=10, startcol=3)
1.10 指定編碼
df.to_excel('test.xlsx', encoding='utf-8')
1.11 使用指定引擎
df.style.to_excel('test.xlsx', engine='openpyxl')
1.12 凍結指定行和列
df.to_excel('test.xlsx', freeze_panes=(0,3))
2 將多個dataframe保存到同一個表格下的不同sheet中
with pd.ExcelWriter(excel_name) as writer:
df_all.to_excel(writer, sheet_name='All ', index = 0, header = None)
df_tmall.to_excel(writer, sheet_name='天貓 (非貓超) ', index = 0, header = None)
df_super.to_excel(writer, sheet_name='天貓超市 ', index = 0, header = None)
df_jd.to_excel(writer, sheet_name='京東', index = 0, header = None)
df_pdd.to_excel(writer, sheet_name='拼多多', index = 0, header = None)
3 選取、修改或洗掉具有指定條件的資料
3.1 選取、修改或洗掉具有指定條件的行
a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
df=pd.DataFrame(a,index=['row0','row1','row2'],columns=list('ABC'))
# 選取
cond_1 = (df.B >= 5) & (df.C < 12)
df_1 = df[cond_1]
# 修改
cond_2 = (df.B >= 2) & (df.C < 12)
df.loc[cond_3, 'C'] = 0 # 滿足條件的行資料中的C欄位的值更改為0
# df.loc[cond_2] = 0 # 滿足條件的全部欄位的值都修改成0
# 洗掉
cond_3 = df['A'].isin([1, 7])
df_3=df[~cond_3]
- 要懂得活學活用,~這個符號用于取反,真的很實用,
- 同時,isin的功能雖然也可以用
|(或)來實作,但效率卻要遠遠高于|,
3.2 選取、修改或洗掉具有指定條件的列
cols=[x for i,x in enumerate(df.columns) if df.iat[0,i]==3] #利用enumerate對row0進行遍歷,將含有數字3的列放入cols中
# 選取某行含有特定數值的列
df_4=df[cols]
# 修改
df_5.loc[:, cols] = 0
# 洗掉
df_6 =df.drop(cols, axis=1) #利用drop方法將含有特定數值的列洗掉
3.3 洗掉含有空值的行或列
df1 = pd.DataFrame(
[
[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, 5],
[np.nan, 3, np.nan, 4]
],columns=list('ABCD'))
print(df1)
df2=df1.copy()
df1['A']=df1['A'].fillna('null') #將df中A列所有空值賦值為'null'
# 洗掉某列空值所在行
df1=df1[~df1['A'].isin(['null'])]
# 洗掉某行空值所在列
df2[0:1]=df2[0:1].fillna('null')
cols=[x for i,x in enumerate(df2.columns) if df2.iat[0,i]=='null']
df2=df2.drop(cols,axis=1)
4 添加一行資料
df=DataFrame(np.arange(16).reshape((4,4)),index=['a','b','c','d'],columns=['c1','c2','c3','c4'])
# 第一種方法
df['e'] = [1, 2, 3, 4]
# 第二種方法
df_new = pd.DataFrame([5, 6, 7, 8]).T
## 修改df4的column和df3的一致,不修改的話會導致合并之后不在同一列上
df_new.columns = df.columns
## 把兩個dataframe合并,需要設定 ignore_index=True
df = pd.concat([df, df_new], ignore_index=True)
5 修改資料型別
一般情況,我們是對某一列的資料進行資料型別的修改
5.1 對指定條件的資料進行修改
df['A'].astype('str')
df['B'].astype(np.float64)
# 滿足特定條件
cond = df.A > 60
df.loc[cond, 'A'].astype('str')
5.2 對指定資料型別的資料進行修改
# 將int64資料型別的資料修改成int16
# 將float64資料型別的資料修改成float32
new_types = {np.dtype(np.int64): np.int16,
np.dtype(np.float64): np.float32}
df = df.astype(df.dtypes.map(new_types).to_dict())
6 資料表格美顏
df.style
這一部分如果要講的話實在太多了,先給自己挖個坑吧,后面有需要可以再補充,
結束語
看完這篇,還有更多知識點分享給你哦,自己慢慢找哈,就在下面鏈接,
推薦關注的專欄
👨?👩?👦?👦 機器學習:分享機器學習實戰專案和常用模型講解
👨?👩?👦?👦 資料分析:分享資料分析實戰專案和常用技能整理
往期內容回顧
💚 學習Python全套代碼【超詳細】Python入門、核心語法、資料結構、Python進階【致那個想學好Python的你】
?? 學習pandas全套代碼【超詳細】資料查看、輸入輸出、選取、集成、清洗、轉換、重塑、數學和統計方法、排序
💙 學習pandas全套代碼【超詳細】分箱操作、分組聚合、時間序列、資料可視化
💜 學習NumPy全套代碼【超詳細】基本操作、資料型別、陣列運算、復制和試圖、索引、切片和迭代、形狀操作、通用函式、線性代數
關注我,了解更多相關知識!
CSDN@報告,今天也有好好學習
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/402639.html
標籤:AI
