Pandas基礎08(分箱操作/時間序列/畫圖)

3.8.1 Pandas分箱操作

數據分箱(Binning) 是一種數據預處理方法,用于將連續型變量的數值范圍分割成若干個區間或“箱”(bins),將數據按照這些區間進行分類,從而轉換為離散型變量。這種方法常用于將數據的變化范圍縮小,使其更加適合某些分析或模型算法的處理,或通過減少異常值的影響來提高模型的穩定性。

  • 等距分箱操作

將數據的取值范圍等分為若干個區間,區間的寬度相等。例如,將數據范圍從0到100分為5個區間,每個區間的寬度為20。

# 等距分箱
x=pd.cut(x=df["Chinese"], #要做分箱的數據bins=4, #分箱的數目right=True, #默認左閉右開labels=["差勁","一般","良好","優秀",] #各箱的名稱
)
# [(11.92, 32.0] < (32.0, 52.0] < (52.0, 72.0] < (72.0, 92.0]]
# ['差勁' < '一般' < '良好' < '優秀']
x.value_counts()
"""
Chinese
一般    3
差勁    2
優秀    2
良好    1
"""
  • 等頻分箱操作

將數據分成若干個區間,使每個區間中包含相同數量的數據點。

# 等頻分箱
x=pd.qcut(x=df["Chinese"], #要做分箱的數據q=4, #分箱的數目,使得每個箱分得的元素個數基本相同labels=["差勁","一般","良好","優秀",] #各箱的名稱
)
# [(11.999, 35.0] < (35.0, 41.5] < (41.5, 66.5] < (66.5, 92.0]]
# ['差勁' < '一般' < '良好' < '優秀']
x.value_counts()
"""
Chinese
差勁    2
一般    2
良好    2
優秀    2
"""
3.8.2 Pandas時間序列

在數據科學和分析領域,時間序列數據是一個非常重要的組成部分。無論是在金融、氣象還是其他領域,時間序列數據的處理和分析都非常常見。Pandas庫為時間序列數據提供了強大的支持,使得處理和分析這些數據變得簡單高效。本文將帶你通過Pandas的一些時間序列功能,幫助你更好地理解如何處理、轉換和操作時間序列數據。

  • 獲取時間數據
pd.Timestamp("2025-02-01") #時刻數據
pd.Period("2025-02-01", freq='D') #時期數據:D日 M月 Y年
  • 批量生成時間數據
pd.date_range("2025-02-01", periods=4, freq='D') #生成時刻數據:periods是生成的數量,freq是按照日/月/年進行生成
pd.period_range("2025-02-01",periods=4, freq='D') #生成時期數據
  • 時間的轉換
# 1.to_datetime將時間轉換為Timestamp類型
pd.to_datetime("2025.2.1")
pd.to_datetime("2025-02-01")
pd.to_datetime("2025/2/1")
pd.to_datetime("1/2/2025")
# 2.將時間戳轉換為時間Timestamp類型
pd.to_datetime(1809459200, unit='s')
  • 時間差
date = pd.to_datetime("2025.2.1")
date + pd.DateOffset(days=6)
date + pd.DateOffset(months=6)
date + pd.DateOffset(years=6)
  • 時間索引與切片
index = pd.date_range("2025-02-01", periods=100, freq='D')
ts = pd.Series(np.random.randint(0, 10, size=(100,)), index=index)
ts['2025-02-01'] #具體日期
ts['2025-02'] #2月份
ts['2025'] #2025年
ts['2025-02-01':'2025-03-25'] #時間范圍切片
  • 屬性
ts.index 
ts.index.year #獲取所有年份
ts.index.month #獲取所有月份 
ts.index.day #獲取所有日
  • 數據移動
index = pd.date_range("2025-02-01", periods=100, freq='D')ts = pd.Series(np.random.randint(0, 10, size=(100,)), index=index)
ts.shift(periods=1) #向下移動一位
ts.shift(periods=-2) #向上移動兩位
  • 頻率轉換
ts.asfreq(pd.tseries.offsets.Week())#將頻率轉換成周
ts.asfreq(pd.tseries.offsets.MonthEnd())#將頻率轉換成月
ts.asfreq(pd.tseries.offsets.YearEnd())#將頻率轉換成年
ts.asfreq(pd.tseries.offsets.Hour(), fill_value=0)#將頻率轉換成小時,空白處用0填充
  • 重采樣

重采樣通常是指對時間序列數據進行重新采樣的過程,尤其是在使用 pandas 庫時。重采樣可以用于改變數據的頻率,向上采樣或向下采樣數據。

  • 向下采樣:將數據從高頻率的時間序列轉變為低頻率,比如從小時數據轉換為日數據。

  • 向上采樣:將數據從低頻率的時間序列轉換為高頻率,比如從日數據轉換為小時數據。

# 對Series進行重采樣
index = pd.date_range("2025-02-01", periods=100, freq='D')
ts = pd.Series(np.random.randint(0, 10, size=(100,)), index=index)
ts.resample("2D").sum() #每兩天的數進行相加
ts.resample("1ME").sum() #每個月的數進行相加
ts.resample("3ME").sum() #每個季度的數進行相加
# 對DataFrame進行重采樣
df = pd.DataFrame({"price":np.random.randint(0, 100, size=(100,)),"time":pd.date_range("2025-02-01", periods=100, freq='D')
})
#rule指定聚合的方式,on指定聚合的列名
df.resample(rule="ME", on="time").sum() #求每個月的價格總合
3.8.3 Pandas繪圖
  • 折線圖

通過plot()函數繪制折線圖

# Series繪制折線圖
s = pd.Series(np.arange(0, 2*np.pi, 0.01))
np.sin(s).plot() #DataFrame繪制折線圖
df = pd.DataFrame(np.random.randint(1, 100, (4,3)), index=["zhangsan", "lisi", "wangwu", "zhouliu"], columns=["Chinese", "Math", "English"])
df.plot()
  • 柱狀圖和條形圖
df.plot(kind="bar")#柱狀圖方法1
df.plot.bar()#柱狀圖方法2
df.plot.bar(stacked=True) #堆疊類型的柱狀圖
df.plot.barh()#水平柱狀圖(條形圖)
  • 直方圖

柱高表示數據的頻數,柱寬表示各組數據的組距

#參數bins可以設置直方圖方柱的個數上限,越大柱寬越小,數據分組越細致
#bins表示分的組數:每組的范圍是(max-min)/bins
s=pd.Series([1,1,1,1,2,2,3,3,3,3,3,4,4,5,6,6,6])
s.plot(kind='hist')
#設置density參數為True,可以把頻數轉換為概率
s.plot(kind='hist', density=True)
#添加kde圖
s.plot(kind='hist')
s.plot(kind='kde')
  • 餅圖
# 畫一列的餅圖
# kind='pie':表示餅圖
# autopct='%.1f%%':在圖中展示.1f%
df['A'].plot(kind='pie', autopct='%.1f%%')# 畫所有列的餅圖
# subplots=True:畫出所有子圖
df.plot.pie(subplots=True, autopct='%.1f%%')
  • 散點圖
# 描述兩列之間的關系
data=np.random.randn(1000,2)
df=pd.DataFrame(data, columns=['A', 'B'])
df.plot(kind="scatter", x='A', y='B')#x為A列,y為B列

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894585.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#,shell32 + 調用控制面板項(.Cpl)實現“新建快捷方式對話框”(全網首發)

Made By 于子軒&#xff0c;2025.2.2 不管是使用System.IO命名空間下的File類來創建快捷方式文件&#xff0c;或是使用Windows Script Host對象創建快捷方式&#xff0c;亦或是使用Shell32對象創建快捷方式&#xff0c;都對用戶很不友好&#xff0c;今天小編為大家帶來一種全新…

國產編輯器EverEdit - 輸出窗口

1 輸出窗口 1.1 應用場景 輸出窗口可以顯示用戶執行某些操作的結果&#xff0c;主要包括&#xff1a; 查找類&#xff1a;查找全部&#xff0c;篩選等待操作&#xff0c;可以把查找結果打印到輸出窗口中&#xff1b; 程序類&#xff1a;在執行外部程序時(如&#xff1a;命令窗…

Vue-data數據

目錄 一、Vue中的data數據是什么&#xff1f;二、data支持的數據類型有哪些&#xff1f; 一、Vue中的data數據是什么&#xff1f; Vue中用到的數據定義在data中。 二、data支持的數據類型有哪些&#xff1f; data中可以寫復雜類型的數據&#xff0c;渲染復雜類型數據時只要遵…

02.03 遞歸運算

使用遞歸求出 1 1/3 -1/5 1/7 - 1/9 ... 1/n的值。 1>程序代碼 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #inc…

數據分析系列--⑥RapidMiner構建決策樹(泰坦尼克號案例含數據)

一、資源下載 二、數據處理 1.導入數據 2.數據預處理 三、構建模型 1.構建決策樹 2.劃分訓練集和測試集 3.應用模型 4.結果分析 一、資源下載 點擊下載數據集 二、數據處理 1.導入數據 2.數據預處理 三、構建模型 1.構建決策樹 雖然決策樹已經構建,但對于大多數初學者或…

高階開發基礎——快速入門C++并發編程6——大作業:實現一個超級迷你的線程池

目錄 實現一個無返回的線程池 完全代碼實現 Reference 實現一個無返回的線程池 實現一個簡單的線程池非常簡單&#xff0c;我們首先聊一聊線程池的定義&#xff1a; 線程池&#xff08;Thread Pool&#xff09; 是一種并發編程的設計模式&#xff0c;用于管理和復用多個線程…

pytorch實現主成分分析 (PCA):用于數據降維和特征提取

人工智能例子匯總&#xff1a;AI常見的算法和例子-CSDN博客 使用 PyTorch 實現主成分分析&#xff08;PCA&#xff09;可以通過以下步驟進行&#xff1a; 標準化數據&#xff1a;首先&#xff0c;需要對數據進行標準化處理&#xff0c;確保每個特征的均值為 0&#xff0c;方差…

100 ,【8】 buuctf web [藍帽杯 2021]One Pointer PHP(別看)

進入靶場 沒提示&#xff0c;去看源代碼。 user.php <?php // 定義一個名為 User 的類&#xff0c;該類可用于表示用戶相關信息或執行與用戶有關的操作 class User{// 聲明一個公共屬性 $count&#xff0c;可在類的內部和外部直接訪問// 這個屬性可能用于記錄與用戶相關…

巧妙利用數據結構優化部門查詢

目錄 一、出現的問題 部門樹接口超時 二、問題分析 源代碼分析 三、解決方案 具體實現思路 四、優化的效果 一、出現的問題 部門樹接口超時 無論是在A項目還是在B項目中&#xff0c;都存在類似的頁面&#xff0c;其實就是一個部門列表或者叫組織列表。 從頁面的展示形式…

QT簡單實現驗證碼(字符)

0&#xff09; 運行結果 1&#xff09; 生成隨機字符串 Qt主要通過QRandomGenerator類來生成隨機數。在此之前的版本中&#xff0c;qrand()函數也常被使用&#xff0c;但從Qt 5.10起&#xff0c;推薦使用更現代化的QRandomGenerator類。 在頭文件添加void generateRandomNumb…

JavaFX - 3D 形狀

在前面的章節中&#xff0c;我們已經了解了如何在 JavaFX 應用程序中的 XY 平面上繪制 2D 形狀。除了這些 2D 形狀之外&#xff0c;我們還可以使用 JavaFX 繪制其他幾個 3D 形狀。 通常&#xff0c;3D 形狀是可以在 XYZ 平面上繪制的幾何圖形。它們由兩個或多個維度定義&#…

深入理解開放尋址法中的三種探測序列

一、引言 開放尋址法是解決散列表中沖突的一種重要方法&#xff0c;當發生沖突&#xff08;即兩個不同的鍵通過散列函數計算得到相同的散列值&#xff09;時&#xff0c;它會在散列表中尋找下一個可用的存儲位置。而探測序列就是用于確定在發生沖突后&#xff0c;依次嘗試哪些…

【雙指針題目】

雙指針 美麗區間&#xff08;滑動窗口&#xff09;合并數列&#xff08;雙指針的應用&#xff09;等腰三角形全部所有的子序列 美麗區間&#xff08;滑動窗口&#xff09; 美麗區間 滑動窗口模板&#xff1a; int left 0, right 0;while (right < nums.size()) {// 增大…

為什么命令“echo -e “\033[9;0]“ > /dev/tty0“能控制開發板上的LCD不熄屏?

為什么命令"echo -e “\033[9;0]” > /dev/tty0"能控制開發板上的LCD不熄屏&#xff1f; 在回答這個問題前請先閱讀我之前寫的與tty和終端有關的博文 https://blog.csdn.net/wenhao_ir/article/details/145431655 然后再來看這條命令的解釋就要容易些了。 這條…

嵌入式八股文面試題(一)C語言部分

1. 變量/函數的聲明和定義的區別&#xff1f; &#xff08;1&#xff09;變量 定義不僅告知編譯器變量的類型和名字&#xff0c;還會分配內存空間。 int x 10; // 定義并初始化x int x; //同樣是定義 聲明只是告訴編譯器變量的名字和類型&#xff0c;但并不為它分配內存空間…

go-zero學習筆記(三)

利用goctl生成rpc服務 編寫proto文件 // 聲明 proto 使用的語法版本 syntax "proto3";// proto 包名 package demoRpc;// golang 包名(可選) option go_package "./demo";// 如需為 .proto 文件添加注釋&#xff0c;請使用 C/C 樣式的 // 和 /* ... */…

Javascript代碼庫-jQuery入門

摘自千鋒教育kerwin的js教程 jQuery 是一個前端庫&#xff0c;也是一個方法庫他里面封裝著一些列的方法供我們使用我們常用的一些方法它里面都有&#xff0c;我們可以直接拿來使用就行了jQuery 之所以好用&#xff0c;很多人愿意使用&#xff0c;是因為他的幾個優點太強大了 優…

【25考研】南開軟件考研復試復習重點!

一、復試內容 復試采取現場復試的方式。復試分為筆試、機試和面試三部分。三部分合計100分&#xff0c;其中筆試成績占30%、機試成績占30%、面試成績占40%。 1.筆試&#xff1a;專業綜合基礎測試 考核方式&#xff1a;閉卷考試&#xff0c;時長為90分鐘。 筆試考查內容范圍…

【最長上升子序列Ⅱ——樹狀數組,二分+DP,純DP】

題目 代碼&#xff08;只給出樹狀數組的&#xff09; #include <bits/stdc.h> using namespace std; const int N 1e510; int n, m; int a[N], b[N], f[N], tr[N]; //f[i]表示以a[i]為尾的LIS的最大長度 void init() {sort(b1, bn1);m unique(b1, bn1) - b - 1;for(in…

012-51單片機CLD1602顯示萬年歷+鬧鐘+農歷+整點報時

1. 硬件設計 硬件是我自己設計的一個通用的51單片機開發平臺&#xff0c;可以根據需要自行焊接模塊&#xff0c;這是用立創EDA畫的一個雙層PCB板&#xff0c;所以模塊都是插針式&#xff0c;不是表貼的。電路原理圖在文末的鏈接里&#xff0c;PCB圖暫時不選擇開源。 B站上傳的…