最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

多場景下的Pandas使用技巧分享

 更新時間:2024年02月02日 09:52:54   作者:mr.sorghum  
這篇文章主要介紹了多場景下的Pandas使用技巧,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

記錄涉及使用pandas處理數(shù)據(jù)的一些方法和錯誤

Pandas讀取數(shù)據(jù)相關(guān)

1.讀取csv文件

df_source = pd.read_csv('[file_path].csv', encoding='UTF-8')

2.讀取.xlsx文件

df_source = pd.read_excel('[file_path].xlsx', encoding='utf-8')  # 原始dataframe

Pandas DataFrame操作

1.獲取dataframe某一列的數(shù)據(jù)

df_source = pd.read_excel('[file_path].xlsx', encoding='utf-8')  # 原始dataframe
df_extract_left = df_source['[col_name]']

2.獲取某幾列的數(shù)據(jù)

df_source = pd.read_excel('[file_path].xlsx', encoding='utf-8')
col_n = ['col_name1', 'col_name2', 'col_name3', 'col_name4']
df_extract_right = pd.DataFrame(df_source ,columns=col_n)

3.Data Frame左連接操作

  • 針對連個不同dataframe列名做左連接
df_merge = pd.merge(df_left, df_right, how='left', left_on='[左表的列名]', right_on='【右表的列名】')

左連接N->N的連接測試

  • 左表
left_dict = {
    'Fruits':['Apple','Banana','Cherry','Dates','Eggfruit'],
    'Color': ['Red', 'Gray', 'Red', 'Brown', 'Yellow']
}
df_left = pd.DataFrame(left_dict)
df_left

dataframe

  • 右表
right_dict = {
    'Fruits':['A','B','C','D','E'],
    'Color': ['Red', 'Yellow', 'Red', 'Brown', 'Yellow']
}
df_right = pd.DataFrame(right_dict)
df_right

在這里插入圖片描述

  • 連接處理
df = pd.merge(df_left, df_right, how='left', left_on='Color', right_on='Color')
df

在這里插入圖片描述

4.處理 dataframe 某一列的值

  • 具體要求: 刪除dataframe某一列中的換行符 \r\n

注意?。。。。。。?!

replace(‘\\n’,‘’) 無法得到正確的結(jié)果的

# 去除列多余的字符 \r\n
df['要處理列的列名'] = df.apply(lambda x:str(x['要處理列的列名']).replace('\r','').replace('\n','') ,axis=1)
df

5.根據(jù)dataframe某一列的值對其他列做聚合

要求 : 根據(jù)某一列的值 做group by后 ,屬于同一group的其他列的字符串做一個拼接

例如

  • a “111”
  • a “222”
  • b “333”
  • 結(jié)果
  • a ”111,222“
  • b “333”
df2 = df.groupby('group by的列')['做字符串拼接的列'].apply(lambda x:x.str.cat(sep=","))
df2

要求 : 對dataframe的兩列進行聚合,并對第三列進行求和

例如:

  • a “111” 3
  • a “222” 5
  • a “111” 6
  • b “112” 4
  • b “222” 4
  • b “222” 2

結(jié)果:

  • a “111” 9
  • a “222” 5
  • b “112” 4
  • b “222” 6
df.groupby(by=['聚合列1','聚合列2'])['第三列'].sum().reset_index(drop=False)

6. 刪除某幾列的數(shù)據(jù)

利用索引刪除多行,不能寫0:2

df.drop([0, 1])

利用列名刪除多列

df.drop(labels=[‘id',‘class'], axis=1)

7. 篩選出某列中符合條件的行

df[df['列名'] == '待篩選的值']

8. groupby后多行合并為一行

例如 group 1:
| col_a | col_b | col_c
| aaa | type1 | 1000
| aaa | type2 | 2000
結(jié)果:
| col_a | type1 | type2
| aaa | 1000 | 2000

def concat_df(x):
    df_res = pd.pivot(x, index='col_a', columns='col_b', values="col_c")
    df_res.insert(0,'col_a',x.iloc[0,0]) #調(diào)試時發(fā)現(xiàn)結(jié)果缺失col_a列,故添加該列值
    return df_res
df_res =  df.groupby('col_a').apply(lambda x : concat_df(x))

9. 刪除dataframe中某一列的符合條件的行

df_res=df.drop(df[df['列名']=='條件'].index)

10. groupby后遍歷 (1) for循環(huán)遍歷(推薦)

for name,df_group in df.groupby(by=['key']):
	# name為當(dāng)前group的key值 str類型
	# df_group為當(dāng)前的子group dataframe類型

(2) apply 匿名函數(shù)遍歷 此方法在涉及到全局變量的賦值使用時不太方便

# x為每個group的dataframe
name,df_group in df.groupby(by=['key']).apply(lamdba x : print(x))

舉例:

df2 = pd.DataFrame([['Tom', 16], ['Nancy', 18], ['Jack', 15],['Tom', 18],['Jack', 13],['Jack', 115]],columns=['cola','colb'])
	
	cola	colb
	Tom	    16
	Nancy	18
	Jack	15
	Tom	    18
	Jack	13
	Jack	115

# 方法一:
for name,df_group in df2.groupby(by=['cola']):
    # 只演示第一個group的值
    print(name) # Jack
    print(df_group)
   cola  colb
   Jack    15
   Jack    13
   Jack   115

# 方法二
df2.groupby(by=['cola']).apply(lambda x: print(x))
  
   cola  colb
2  Jack    15
4  Jack    13
5  Jack   115
   
    cola  colb
1  Nancy    18
 
  cola  colb
0  Tom    16
3  Tom    18

11. dataframe更改列名

df.rename(columns={'two':'twotwo'},inplace=True)

12. dataframe隔行相減

需求:假設(shè)有以下dataframe,要計算每兩行之間的時間差
date
2019-08-29 09:20:37
2019-08-29 09:21:23
2019-08-29 09:22:09

		df_res = pd.DataFrame()
		df['DATE1'] = df['DATE'].shift(1)
        df_time = (df['DATE'] - df['DATE1']).dt.total_seconds()
        df_time.dropna(axis=0,inplace=True)
        df_res = pd.concat([df_res,df_time])

12. dataframe刪除值為空的列或者行

df.dropna(axis=0,inplace=True) # axis = 0 為行 axis = 1為列 ,inplace = True表示替換原df

13. dataframe刪某列值中符合條件的行

需求 :現(xiàn)在有2個dataframe,要求刪除在df2中某列包含該值的行,該值為df1中的某列所出現(xiàn)的值
df1
a b c d
1 2 3 3
2 …
3 …
df2
a b c d
1 2 3 3
2 …
3 …
4…
5…
6…
結(jié)果
a b c d
4…
5…
6…

df2=df2[~df2['a'].isin(df1['a'].unique())]

14.統(tǒng)計dataframe每一列出現(xiàn)的不同值的最小值

count_min = min(df['列名'].value_counts())
# 返回一個series

15.統(tǒng)計兩列中數(shù)值相同的行數(shù)

df1
a b c d
1 2 3 3
2 2 3 4
3 3 4 5
統(tǒng)計a,b兩列值相同的行的個數(shù)
結(jié)果 2

len(set(df1['a']) & set(df1['b']))

16.刪除DataFrame兩列中值相同的行

df1
a b c d
1 2 3 3
2 2 3 4
3 3 4 5
刪除a,b列值相同的行 結(jié)果
a b c d
1 2 3 3

df1.loc[~(df1['a']==df1['b'])]

16.df判斷某列值為True,將另外一列對應(yīng)的值相加

df1
a b
T 2
F 2
T 3
b列中的某幾個值相加,這些值為a列中對應(yīng)值為T的
結(jié)果 5

df.loc[df['a']==True,'b'].sum()

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

  • Python類成員繼承重寫的實現(xiàn)

    Python類成員繼承重寫的實現(xiàn)

    這篇文章主要介紹了Python類成員繼承重寫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • python matplotlib如何給圖中的點加標(biāo)簽

    python matplotlib如何給圖中的點加標(biāo)簽

    這篇文章主要介紹了python matplotlib給圖中的點加標(biāo)簽,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Python使用DeepSeek進行聯(lián)網(wǎng)搜索功能詳解

    Python使用DeepSeek進行聯(lián)網(wǎng)搜索功能詳解

    Python作為一種非常流行的編程語言,結(jié)合DeepSeek這一高性能的深度學(xué)習(xí)工具包,可以方便地處理各種深度學(xué)習(xí)任務(wù),本文將介紹一下如何使用Python和DeepSeek進行聯(lián)網(wǎng)搜索,感興趣是可以了解下
    2025-03-03
  • python3下pygame如何實現(xiàn)顯示中文

    python3下pygame如何實現(xiàn)顯示中文

    這篇文章主要介紹了python3下pygame如何實現(xiàn)顯示中文,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • python 列表轉(zhuǎn)為字典的兩個小方法(小結(jié))

    python 列表轉(zhuǎn)為字典的兩個小方法(小結(jié))

    這篇文章主要介紹了python 列表轉(zhuǎn)為字典的兩個小方法(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python Web框架Flask中使用百度云存儲BCS實例

    Python Web框架Flask中使用百度云存儲BCS實例

    這篇文章主要介紹了Python Web框架Flask中使用百度云存儲BCS實例,本文調(diào)用了百度云存儲Python SDK中的相關(guān)類,需要的朋友可以參考下
    2015-02-02
  • Python?查看數(shù)據(jù)類型與格式

    Python?查看數(shù)據(jù)類型與格式

    這篇文章主要介紹了Python?查看數(shù)據(jù)類型與格式方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Python 函數(shù)的遞歸詳解

    Python 函數(shù)的遞歸詳解

    這篇文章主要為大家介紹了Python 函數(shù)的遞歸,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python使用Remi庫打造Web GUI的完整指南

    Python使用Remi庫打造Web GUI的完整指南

    Remi是一個輕量級、純Python實現(xiàn)的GUI庫,它將傳統(tǒng)桌面GUI的使用方式,與Web前端的部署優(yōu)勢結(jié)合,開發(fā)者可以像寫Tkinter那樣開發(fā)應(yīng)用,卻能直接在瀏覽器中使用這些程序,本文將系統(tǒng)性地介紹Remi的安裝、使用方法、核心原理、典型組件、實際案例,需要的朋友可以參考下
    2025-08-08
  • 最新評論

    宾川县| 武乡县| 罗城| 韶关市| 五华县| 常德市| 遂昌县| 太原市| 江永县| 新绛县| 洪雅县| 徐州市| 太和县| 石屏县| 沙河市| 临泉县| 上栗县| 攀枝花市| 宁明县| 六枝特区| 封开县| 斗六市| 东阿县| 岱山县| 上蔡县| 新乡市| 乡城县| 德令哈市| 华宁县| 庆城县| 边坝县| 云阳县| 龙岩市| 滦南县| 塔城市| 永修县| 玛纳斯县| 寿光市| 客服| 岗巴县| 古交市|