python數據處理與分析入門-pandas使用(4)

往期文章:

  1. pandas使用1
  2. pandas使用2
  3. pandas使用3

pandas使用技巧

創建一個DF對象

# 首先創建一個時間序列
dates = pd.date_range('20180101', periods=6)
print(dates)# 創建DataFrame對象,指定index和columns標簽
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
print(df)

布爾型索引使用

# 用一列的值來選擇數據
print(df.A > 0)
print("-----------------------------------------------")
# 使用.isin()函數過濾數據
df2 = df.copy()
df2['E'] = ['one', 'one','two','three','four','three']
# 提取df2中'E'值屬于['two', 'four']的行
print(df2[df2['E'].isin(['two','four'])])
# 輸出
2018-01-01     True
2018-01-02     True
2018-01-03    False
2018-01-04    False
2018-01-05    False
2018-01-06     True
Freq: D, Name: A, dtype: bool
-----------------------------------------------A         B         C         D     E
2018-01-03 -0.737122 -1.018953  1.367684  0.038003   two
2018-01-05 -1.120744 -0.270765 -0.182049 -1.142167  four
# 為DataFrame創建一個新的列,其值為時間順序(與df相同)的索引值
s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20180101', periods=6))
print(s1)df['F'] = s1# 按標簽賦值
df.at[dates[0],'A'] = 0# 按索引賦值
df.iat[0,1] = 0# 用Numpy數組賦值
df.loc[:,'D'] = np.array([5] * len(df))
print("-----------------------------------------------")
# 最終結果
print(df)
# 輸出
2018-01-01    1
2018-01-02    2
2018-01-03    3
2018-01-04    4
2018-01-05    5
2018-01-06    6
Freq: D, dtype: int64
-----------------------------------------------A         B         C  D  F
2018-01-01  0.000000  0.000000 -1.688875  5  1
2018-01-02  0.405921  0.596388  0.742552  5  2
2018-01-03 -0.737122 -1.018953  1.367684  5  3
2018-01-04 -0.356770  1.083033  0.876066  5  4
2018-01-05 -1.120744 -0.270765 -0.182049  5  5
2018-01-06  1.279730 -0.662744  0.443358  5  6

缺失數據

Pandas默認使用np.nan來代表缺失數據。Reindexing允許用戶對某一軸上的索引改/增/刪,并返回數據的副本

# 創建DataFrame對象df1,以dates[0:4]為索引,
# 在df的基礎上再加一個新的列'E'(初始均為NaN)
df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
print(df1)
print("-----------------------------------------------")
# 將'E'列的前兩個行設為1
df1.loc[dates[0]:dates[1],'E'] = 1
print(df1)
# 輸出A         B         C  D  F   E
2018-01-01  0.000000  0.000000 -1.688875  5  1 NaN
2018-01-02  0.405921  0.596388  0.742552  5  2 NaN
2018-01-03 -0.737122 -1.018953  1.367684  5  3 NaN
2018-01-04 -0.356770  1.083033  0.876066  5  4 NaN
-----------------------------------------------A         B         C  D  F    E
2018-01-01  0.000000  0.000000 -1.688875  5  1  1.0
2018-01-02  0.405921  0.596388  0.742552  5  2  1.0
2018-01-03 -0.737122 -1.018953  1.367684  5  3  NaN
2018-01-04 -0.356770  1.083033  0.876066  5  4  NaN
# 處理缺失數據
# 剔除df1中含NaN的行(只要任一一列為NaN就算)
df2 = df1.dropna(how='any')
print(df2)
print("--------------------------------------")
# 用5填充df1里的缺失值
df2 = df1.fillna(value=5)
print(df2)
print("--------------------------------------")
# 判斷df2中的值是否為缺失數據,返回True/False
print(pd.isnull(df2))
# 輸出A         B         C  D  F    E
2018-01-01  0.000000  0.000000 -1.688875  5  1  1.0
2018-01-02  0.405921  0.596388  0.742552  5  2  1.0
--------------------------------------A         B         C  D  F    E
2018-01-01  0.000000  0.000000 -1.688875  5  1  1.0
2018-01-02  0.405921  0.596388  0.742552  5  2  1.0
2018-01-03 -0.737122 -1.018953  1.367684  5  3  5.0
2018-01-04 -0.356770  1.083033  0.876066  5  4  5.0
--------------------------------------A      B      C      D      F      E
2018-01-01  False  False  False  False  False  False
2018-01-02  False  False  False  False  False  False
2018-01-03  False  False  False  False  False  False
2018-01-04  False  False  False  False  False  False
此類操作默認排除缺失數據
# 重新創建一份數據
dates = pd.date_range('20180101', periods=6)
df = pd.DataFrame(np.ones((6,4)), index=dates, columns=list('ABCD'))
s = pd.Series([2,2,2,2,2,2], index=dates)
df['E'] = s
df.head()
# 求平均值
print(df.mean())
print("------")# 一行求平均值
print(df.mean(1))
print("------")# 創建Series對象s,以dates為索引并平移2個位置
s = pd.Series([1,3,5,np.nan,6,8], index=dates).shift(2)
print(s)
print("------")# 從df中逐列減去s(若有NaN則得NaN)
print(df.sub(s, axis='index'))# 逐行累加
print(df.apply(np.cumsum))
print("------")# 每列的最大值減最小值
print(df.apply(lambda x: x.max() - x.min()))# 字符
# Series對象的str屬性具有一系列字符處理方法,可以很輕松地操作數組的每個元素。
s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
print(s.str.lower())

更多內容請查看我的gittee倉庫 : Python基礎練習

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

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

相關文章

el-select下拉框 添加 el-checkbox 多選框,支持全選、取消全選

el-select下拉框 添加 el-checkbox 多選框,支持全選、取消全選 前言一、實現思路二、實現代碼1.模板代碼2. css 樣式3.js 代碼 DEMO 演示總結 前言 實現效果預覽 提示:本內容基于element-ui 組件實現,如果使用其他組件庫、可參考下面實現方…

「AIGC算法」線性回歸模型

線性回歸是統計學和機器學習中一種常用的監督學習算法,用于預測連續數值型的輸出。線性回歸模型試圖找到特征變量(或稱自變量)與目標變量(因變量)之間的線性關系。 線性回歸的兩種主要類型: 簡單線性回歸&a…

學習Nginx(三):命令與信號

命令及選項 1. 顯示幫助信息: [rootRockyLinux9 ~]# nginx -h nginx version: nginx/1.26.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]選項:-?,-h : 顯示幫助信息-v : 顯示版本信息-V …

Error in debuggerConnector: connect ECONNREFUSED問題解決

最近重新開始electron開發,兩三年前寫的代碼幾乎看不懂了。。然后debug一下,直接報錯了: Debugger listening on ws://127.0.0.1:20793/d146ffdb-c3b8-4480-a8d8-d04bb643c7c1 For help, see: https://nodejs.org/en/docs/inspector Error i…

關于GitHub倉庫建立及提交問題

文章目錄 前言GitHub倉庫創建token令牌的獲取GitHub克隆到本地GitHub上傳文件 前言 為了整一個GitHub倉庫然后上傳文件,筆者看了不下100篇博客,20段教程,最后在兩位大佬的幫助下,才整明白了😭 先提前說一嘴從 2021年8月…

網絡爬蟲安全:90后小伙,用軟件非法搬運他人原創視頻被判刑

目錄 違法視頻搬運軟件是網絡爬蟲 如何發現偷盜視頻的爬蟲? 攔截違法網絡爬蟲 央視《今日說法》欄目近日報道了一名程序員開發非法視頻搬運軟件獲利超700多萬,最終獲刑的案例。 國內某知名短視頻平臺報警稱,有人在網絡上售賣一款視頻搬運…

劉邦的創業團隊是沛縣人,朱元璋的則是鳳陽;要創業,一個縣人才就夠了

當人們回顧劉邦和朱元璋的創業經歷時,總是會感慨他們起于微末,都創下了偌大王朝,成就無上榮譽。 尤其是我們查閱史書時,發現這二人的崛起班底都是各自的家鄉人,例如劉邦的班底就是沛縣人,朱元璋的班底是鳳…

大模型技術介紹和實現流程以及向量庫的介紹

多模態大模型:(Multimodal Models)指能夠處理和生成多種類型數據(如文本、圖像、音頻等)的機器學習模型。該模型整合了來自不同模態的數據,從而提高了任務執行的準確性和廣度。 一、多模態大模型 任務步驟…

分布式搜索-elaticsearch基礎 概念

什么是elaticsearch: 倒排索引:就是將要查詢的內容分成一個個詞條,在將詞條文檔id存入,詞條是唯一的。 文檔詞條總結: mysql和Elasticsearch概念對比: 架構: 基本概念總結:

Linux上執行內存中的腳本和程序

在Linux中可以不需要有腳本或者二進制程序的文件在文件系統上實際存在,只需要有對應的數據在內存中,就有辦法執行這些腳本和程序。 原理其實很簡單,Linux里有辦法把某塊內存映射成文件描述符,對于每一個文件描述符,Lin…

一線互聯網大數據面試題核心知識庫(100萬字)

本面試寶典涵蓋大數據面試高頻的所有技術棧,包括Liunx&Shell基礎,Hadoop,Zookpeer,Flume,Kafka,Hive,Datax,Maxwell,DolphinScheduler,Spark Core&SQ…

光伏行業該如何起步?

隨著全球對可再生能源的需求日益增長,光伏行業作為其中的佼佼者,正迎來前所未有的發展機遇。然而,對于新進入者或希望在這一領域有所建樹的企業來說,如何起步并穩健發展是一個值得深思的問題。以下是一些關于光伏行業起步的建議。…

MySQL-事務篇

文章目錄 何為事務?什么是事務的ACID特性?并發事務帶來了哪些問題?不可重復讀和幻讀有什么區別?并發事務的控制方式有哪些?SQL標準定義了哪些事務隔離級別?MYSQL的隔離級別是基于鎖實現的嗎? 何…

微服務- protobuf 安裝

這里寫自定義目錄標題 1:下載鏈接2 :下載對應的包3:解壓到目錄4:設置環境變量5: 查看版本 1:下載鏈接 https://github.com/protocolbuffers/protobuf/releases 2 :下載對應的包 3:解壓到目錄 4&…

從RTTR談Reflection機制

雖然C11引入了RTTI、Metaprogramming 等技術,但C在Reflection編程方面依舊功能有限。在社區上,RTTR則提供了一套C編寫的反射庫,補充了C在Reflection方面的缺陷。 零、環境 操作系統Windows 11Visual StudioVisual Studio Community 2022 CMa…

git 命令 - rebase

簡介 git rebase 是一個用于重新應用一系列提交到另一個基礎的 Git 命令。 它可以用來整合來自不同分支的更改,同時保持項目歷史的整潔。 操作流程 開始變基: 要開始一個變基操作,你需要指定一個基礎分支。通常,這個基礎分支是…

2024.05.14 Diffusion 代碼學習筆記

配環境 我個人用的是Geowizard的環境:https://github.com/fuxiao0719/GeoWizard。 出于方便考慮,用的pytorch官方的docker容器,因此python版本(3.10)和原作者(3.9)不同,其余都是一…

一文說通用戶故事點數是什么?

一文說通用戶故事點數是什么? 第26期:一文說通用戶故事點數是什么? 用戶故事點數是一種采用相對估算法進行估算的一種工具,一般采用斐波那契數列表征用戶故事里說的大小,采用0 1 2 3 5 8 13這樣的一些數字來表征用戶…

【漏洞復現】Secnet-智能路由系統 actpt_5g.data信息泄露

0x01 產品簡介 Secnet安網智能AC管理系統是廣州安網通信技術有限公司(簡稱“安網通信”)的無線AP管理系統 0x02 漏洞描述 Secnet智能路由系統 acipt 5g.data 接口存在信息泄露漏洞,未經身份驗證的遠程攻擊者可以利用此漏洞獲取系統賬戶名密碼等重要憑據&#xff…

全流程TOUGH系列軟件實踐技術應用

TOUGH系列軟件是由美國勞倫斯伯克利實驗室開發的,旨在解決非飽和帶中地下水、熱運移的通用模擬軟件。和傳統地下水模擬軟件Feflow和Modflow不同,TOUGH系列軟件采用模塊化設計和有限積分差網格剖分方法,通過配合不同狀態方程(EOS模…