Python----數據分析(Pandas一:pandas庫介紹,pandas操作文件讀取和保存)

一、Pandas庫

1.1、概念

????????Pandas是一個開源的、用于數據處理和分析的Python庫,特別適合處理表格類數 據。它建立在NumPy數組之上,提供了高效的數據結構和數據分析工具,使得數據操作變得更加簡單、便捷和高效。

????????Pandas 的目標是成為 Python 數據分析實踐與實戰的必備高級工具,其長遠目標是成為最強大、最靈活、可以支持任何語言的開源數據分析工具

1.2、數據結構

1. Series:一維數組,可以存儲任何數據類型(整數、字符串、浮點數等),每個 元素都有一個與之對應的標簽(索引)。

2. DataFrame:二維表格型數據結構,可以視為多個 Series 對象的集合,每一列 都是一個 Series。每列可以有不同的數據類型,并且有行和列的標簽。

1.3、數據操作

讀取和保存數據:支持多種數據格式,如 CSV、Excel、SQL 數據庫、JSON 等。

數據選擇和過濾:提供靈活的索引和條件篩選功能,方便數據的提取和過濾。

數據清洗:提供了處理缺失數據、重復數據、異常值等數據清洗功能。

數據轉換:通過 apply(), map(),replace()等方法進行數據轉換。

數據合并:使用concat(), merge(), join()等方法進行數據的橫向和縱向合并。

聚合和分組:使用 組和聚合。

1.4、主要特點

1. 數據結構:Pandas提供了兩種主要的數據結構:Series(一維數組)和 DataFrame(二維表格)。

2. 數據操作:支持數據的增、刪、改、查等操作,以及復雜的數據轉換和清洗。

3. 數據分析:提供豐富的數據分析方法,如聚合、分組、透視等。

4. 文件讀取與寫入:支持多種文件格式(如CSV、Excel、SQL等)的讀取和寫入。

5. 與其他庫集成良好:Pandas 與許多其他三方庫(如 NumPy、Matplotlib、 Scikit-learn等)無縫集成,形成了一個強大的數據科學生態系統。

6. 強大的社區支持:Pandas 擁有龐大的開發者社區,提供豐富的資源和學習材 料。

官方文檔

http://pandas.pydata.org/pandas-docs/stable/

安裝

pip install pandas

二、Pandas的讀取與保存

2.1、讀取數據

2.1.1、Pandas讀取Excel文件

說明

????????使用Pandas模塊操作Excel時候,需要安裝openpyxl

????????pip install openpyxl==3.1.2

????????pandas.read_excel是pandas庫中用于讀取Excel文件( .xls 或 數。它可以將Excel文件中的數據讀取為DataFrame對象,便于進行數據分析和處 理。?

pandas.read_excel(io, sheet_name=0, header=0, index_col=None, usecols=None, squeeze=False,dtype=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, parse_dates=False, date_parser=None,skipfooter=0, convert_float=True, **kwds)
描述說明
io文件路徑或文件對象。這是唯一必需的參數,用于指定要讀取的Excel文件。
sheet_name=0要讀取的表名或表的索引號。默認為0,表示讀取第一個工作 表。可以指定工作表名或索引號,如果指定多個,將返回一個字典,鍵為工作表 名,值為對應的DataFrame。
header=0用作列名的行號,默認為0,即第一行作為列名。如果沒有標題行, 可以設置為None。
index_col=None用作行索引的列號或列名。默認為None,表示不使用任何列 作為索引。可以是一個整數、字符串或列名的列表。
usecols=None要讀取的列。默認為None,表示讀取所有列。可以是一個整數 列表、字符串列表或Excel列的位置(如 [0, 1, 2])或字母標記(如 ['A', 'B', 'C'])。
squeeze=False如果讀取的數據只有一列,當設置為True時,返回一個Series 而不是DataFrame。
dtype=None指定某列的數據類型。默認為None,表示自動推斷。可以是一個 字典,鍵為列名,值為NumPy數據類型。
skiprows=None要跳過的行號或行號列表。默認為None,表示不跳過任何行。 可以是整數或整數列表。
nrows=None讀取的行數,從文件頭開始。默認為None,表示讀取所有行。
na_values=None將指定的值替換為NaN。默認為None,表示不替換。可以是 一個值或值的列表。
keep_default_na=True如果為True(默認),則除了通過 na_values指定的值外,還將默認的NaN值視為NaN。
parse_dates=False是否嘗試將列解析為日期。默認為False。可以是一個布爾 值、列名列表或列號的列表。
date_parser=None用于解析日期的函數。默認為None,表示使用pandas默認 的日期解析器。
skipfooter=0要跳過的文件底部的行數。默認為0,表示不跳過任何底部的 行。
convert_float=True是否將所有浮點數轉換為64位浮點數。默認為True,以 避免數據類型推斷問題。
**kwds允許用戶傳遞其他關鍵字參數,這些參數可能會被引擎特定的讀取器所 識別。
import pandas as pd
pd.read_excel('stu_data.xlsx')  

指定導入哪個Sheet

pd.read_excel('stu_data.xlsx',sheet_name='Target')
pd.read_excel('stu_data.xlsx',sheet_name=0)

通過index_col指定行索引?

pd.read_excel('stu_data.xlsx',sheet_name=0,index_col=0)

通過header指定列索引?

pd.read_excel('stu_data.xlsx',sheet_name=0,header=1)
pd.read_excel('stu_data.xlsx',sheet_name=0,header=None)

通過usecols指定導入列

pd.read_excel('stu_data.xlsx',usecols=[1,2,3])

2.1.2、Pandas讀取數據_CSV文件

????????pandas.read_csv 是一個非常強大的函數,用于從文件、URL、文件-like對象等讀 取逗號分隔值(CSV)文件。這個函數有很多參數,允許你以多種方式自定義數據加 載過程。

pandas.read_csv(filepath_or_buffer, sep, header, usercols, na_values, parse_dates, skiprows, nrows)
描述說明
filepath_or_buffer指定要讀取的 CSV 文件的路徑或文件對象。可以是一個 字符串,表示文件的絕對路徑或相對路徑;也可以是一個已經打開的文件對象 (例如通過 open() 函數打開的文件)。
sep字符串,用于分隔字段的字符。默認是逗號,,但可以是任何字符,例如 ';' 或 '\t'(制表符)。
header整數或整數列表,用于指定行號作為列名,或者沒有列名,
usecols列表或 callable,用于指定要讀取的列。可以是列名的列表,也可以是 列號的列表。
na_values字符串、列表或字典,用于指定哪些其他值應該被視為NA/NaN
parse_dates列表或字典,用于指定將哪些列解析為日期。
skiprows整數或列表,用于指定要跳過的行號或條件。
nrows整數,用于指定要讀取的行數。

導入csv文件時除了指明文件路徑,還需要設置編碼格式。

在國內,Python中用得比較多的兩種編碼格式是UTF-8和gbk,默認編碼格式是UTF-8。

通過設置參數encoding來設置導入的編碼格式。

pd.read_csv('stu_data.csv',encoding='gbk')

2.1.4、Pandas讀取txt文件

????????導入.txt文件用得方法時read_table(),read_table()是將利用分隔符分開的文件導入。DataFrame的通用函數。它不僅僅可以導入.txt文件,還可以導入.csv文件。

導入.txt文件

pd.read_table('test_data.txt',encoding='utf-8',sep='\t')

導入.csv文件,指明分隔符?

pd.read_table('stu_data.csv',encoding='gbk',sep=',')

2.1.5、讀取數據庫數據?

配置 MySQL 連接引擎

conn = pymysql.connect( host = 'localhost', user = 'root', passwd = 'root', db = 'mydb',port=3306, charset = 'utf8'
)

讀取數據表

pd.read_sql( sql :需要執行的 SQL 語句/要讀入的表名稱con : 連接引擎名稱 index_col = None :將被用作索引的列名稱 columns = None :當提供表名稱時,需要讀入的列名稱 list 
)
tab1 = pd.read_sql('SELECT * FROM t_menus',con=conn)
tab1 = pd.read_sql('SELECT count(1) FROM t_menus',con=conn)number = 10
tab1 = pd.read_sql(f'SELECT * FROM t_menus LIMIT {number}',con=conn,index_col = ['empno'],)

數據sql

CREATE TABLE `t_menus` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(32) NOT NULL,`path` varchar(32) DEFAULT NULL,`level` int(11) DEFAULT NULL,`pid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `name` (`name`),KEY `pid` (`pid`),CONSTRAINT `t_menus_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `t_menus` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb4;INSERT INTO `t_menus` VALUES (-1,'全部',NULL,0,NULL),(1,'用戶管理',NULL,1,-1),(2,'權限管理',NULL,1,-1),(3,'商品管理',NULL,1,-1),(4,'訂單管理',NULL,1,-1),(5,'數據統計',NULL,1,-1),(11,'用戶列表','/user_list',2,1),(21,'角色列表','/author_list',2,2),(22,'權限列表','/role_list',2,2),(31,'商品列表','/product_list',2,3),(32,'分類列表','/group_list',2,3),(33,'屬性列表','/attribute_list',2,3),(41,'訂單列表','/order_list',2,4),(51,'統計列表','/data_list',2,5);

2.2、保存數據

df.to_csv( filepath_or_buffer :要保存的文件路徑 sep =:分隔符 columns :需要導出的變量列表 header = True :指定導出數據的新變量名,可直接提供 list index = True :是否導出索引 mode = 'w' : Python 寫模式,讀寫方式:r,r+ , w , w+ , a , a+   encoding = 'utf-8' :默認導出的文件編碼格式 
)
df2.to_csv('temp.csv')
#===========================
df.to_excel( filepath_or_buffer :要讀入的文件路徑 sheet_name = 1|Sheet :要保存的表單名稱 
)
df2.to_excel('temp.xlsx', index = False, sheet_name = data)

2.2.1、to_csv

????????用于將DataFrame對象保存為CSV(逗號分隔值)文件的方法。

DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, mode='w', encoding=None, quoting=None, quotechar='"', **kwargs)
描述說明
path_or_buf指定輸出文件的路徑或文件對象。
sep字段分隔符,通常使用逗號,或制表符\t。
na_rep缺失值的表示方式,默認為空字符串 ''。
float_format浮點數的格式化方式,例如 '%.2f'用于格式化為兩位小數。
columns要寫入的列的子集,默認為None,表示寫入所有列。
header是否寫入行索引,通常設置為True或False,取決于是否需要索引。
index是否寫入列名,通常設置為True。
mode寫入模式,通常使用’w’(寫入,覆蓋原文件)或’a’(追加到文件末尾)。
encoding文件編碼,特別是在處理非ASCII字符時很重要
quoting控制字段引用的行為,通常用于確保字段中的分隔符被正確處理。
quotechar用于包圍字段的字符,默認為雙引號"。
**kwargs其他關鍵字參數。
import pandas as pd# 創建一個簡單的DataFrame
data = {
'姓名': ['張三', '李四', '王五'],
'年齡': [28, 34, 29],
'城市': ['北京', '上海', '廣州']
}
df = pd.DataFrame(data)
# 將DataFrame保存為CSV文件
df.to_csv('人員信息.csv', index=False, encoding='utf_8_sig')

2.2.2、to_excel

????????Pandas中的 to_excel用于將DataFrame保存為Excel文件。

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, inf_rep='inf', freeze_panes=None, storage_options=None)
描述說明
excel_writer字符串或ExcelWriter對象,指定輸出文件的路徑或文件對象。
sheet_name='Sheet1'要寫入的工作表名稱。
na_rep=''指定缺失值的表示方式。
float_format=None浮點數的格式化方式,例如’%.2f’。
columns=None要寫入的列的子集,默認為None,表示寫入所有列。
header=True是否寫入列名,默認為True。
index_label=None是否寫入行索引,默認為True。
index=True指定行索引列的列名,如果為None,并且 : header為True,則使用索引名。
startrow=寫入DataFrame的起始行位置,默認為0。
startcol=0寫入DataFrame的起始列位置,默認為0。
engine=None指定用于寫入文件的引擎,可以是’openpyxl’(默認) 或’xlsxwriter’。
merge_cells=True是否合并單元格,這在有合并單元格的Header時很有用。
inf_rep='inf'指定無限大的表示方式。
freeze_panes=None指定凍結窗口的單元格范圍,例如’A2’。
storage_options=None指定存儲連接的參數,例如認證憑據。
import pandas as pd
# 創建一個簡單的DataFrame
data = {
'姓名': ['張三', '李四', '王五'],
'年齡': [28, 34, 29],
'城市': ['北京', '上海', '廣州']
}
df = pd.DataFrame(data)
# 將DataFrame保存為Excel文件
df.to_excel('人員信息.xlsx', index=False)

2.2.3、保存數據到數據庫

注意

需要安裝sqlalchemy

pip install sqlalchemy

df.to_sql( name :將要存儲數據的表名稱con : 連接引擎名稱 if_exists = 'fail' :指定表已經存在時的處理方式 fail :不做任何處理(不插入新數據) replace :刪除原表并重建新表 append :在原表后插入新數據 index = True :是否導出索引 )from sqlalchemy import create_engine
con = create_engine('mysql+pymysql://root:root@localhost:3306/mydb?charset=utf8') df.to_sql('t_stu',con,if_exists=append)

三、思維導圖

?

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

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

相關文章

Type-C:智能家居的電力革命與空間美學重構

在萬物互聯的時代浪潮中,家居空間正經歷著從功能容器到智慧終端的蛻變。當意大利設計師安東尼奧奇特里奧提出"消失的設計"理念二十年后,Type-C充電技術正以潤物無聲的方式重塑著現代家居的形態與內核,開啟了一場靜默的居住革命。 【…

C++ 左值(lvalue)和右值(rvalue)

在 C 中,左值(lvalue)和右值(rvalue)是指對象的不同類別,區分它們對于理解 C 中的表達式求值和資源管理非常重要,尤其在現代 C 中涉及到移動語義(Move Semantics)和完美轉…

【含文檔+PPT+源碼】基于SpringBoot和Vue的編程學習系統

項目介紹 本課程演示的是一款 基于SpringBoot和Vue的編程學習系統,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系統 3.該項…

關于新奇的css

background: linear-gradient(154deg, #07070915 30%, hsl(var(--primary) / 30%) 48%, #07070915 64%); filter: blur(100px); background: linear-gradient(154deg, #07070915 30%, hsl(var(--primary) / 30%) 48%, #07070915 64%); 這是一個線性漸變背景設置,角度…

Maxscript如何通過單擊現有按鈕添加新按鈕?

創建一個按鈕,你可以單擊它,然后添加一個新按鈕。 你必須創建一個動態UI,使用maxscript UI元素,將卷展欄構建為字符串,然后評估該字符串并打開新的卷展欄以更新你的UI;使用RolloutCreator(請參閱幫助文件)幫助您構建卷展欄,并打開新的卷展欄以更新您的UI,看下面的示…

Android控件Selector封裝優化指南:高效實現動態UI效果

本文詳細介紹了如何在Android開發中優化selector的封裝,涵蓋Button、TextView、ImageView、CheckBox、RadioButton等常見控件的動態效果實現。通過結合Material Design組件、矢量圖、Ripple效果以及動畫Selector,提供了一套現代化、高性能的解決方案&…

pytest+allure+jenkins

本地運行參考:pytestallure 入門-CSDN博客 jenkins運行如下: 安裝插件:allure 配置allure安裝目錄 配置pytest、allure 環境變量 配置流水線 進行build,結果如下 ,點擊allure report 查看結果

C#核心筆記——(五)框架概述

.NET Ftamework中幾乎所有功能都是通過大量的托管類型提供的。這些類型組織在層次化的命名空間中,并打包為一套程序集,與CLR一起構成了.NET平臺。 有些.NET類型是由CLR直接使用的,且對于托管宿主環境而言是必不可少的。這些類型位于一個名為…

phpstudy+phpstorm+xdebug【學習筆記】

配置PHPStudy 配置PHPSTORM phpstorm選擇PHP版本 配置DEBUG 設置服務器 編輯配置 學習參考鏈接::https://blog.csdn.net/m0_60571842/article/details/133246064

Vue:Vue+TS學習筆記

文章目錄 前文Vue 3學習 Vue3 的重要性變更內容 底層邏輯選項式 API 和組合式 API體驗組合式 API很多鉤子組件通信 和 TS 結合開發為什么要用 TS? 正式上手 Vuets 開發給 ref 添加類型標記。ref, reactive, computed 綜合代碼模板引用類型傳值寫法 解決問題: 第三方包想要有類…

ACwing—01背包(暴力bfs+dp+遞歸+記憶化搜索算法)

問題 有 N件物品和一個容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的體積是 vi,價值是 wi。 求解將哪些物品裝入背包,可使這些物品的總體積不超過背包容量,且總價值最大。 輸出最大價值。 輸入格式 第一行兩個整數&#xff0c…

洛谷 P2801 教主的魔法 題解

之前學過 莫隊 算法,其運用了分塊思想;但是我居然是第一次寫純種的分塊題目。 題意 給你一個長度為 n n n 的序列 a a a(一開始 ? a i ∈ [ 1 , 1000 ] \forall a_i\in[1,1000] ?ai?∈[1,1000])。要求執行 q q q 次操作&…

leetcode 75.顏色分類(荷蘭國旗問題)

題目描述 題目分析 本題是經典的「荷蘭國旗問題」,由計算機科學家 Edsger W. Dijkstra 首先提出。 要想單獨解決這道題本身還是很簡單的,統計0、1、2的數量然后按順序賦值,或者手寫一個冒泡排序,whatever。 但是在這一題中我們主…

rc4算法簡單介紹及實現

0. 介紹 RC4是一種流密碼&#xff0c;但因為安全性問題已經被棄用。 1. 算法描述 1.1 初始化 Key為生成的隨機密鑰&#xff1a;1-256B S為一數組&#xff1a;256B T為輔助數組&#xff1a;keylenB for (int i 0;i < 256;i) {S[i] i;T[i] S[i % keylen]; }1.2 初始化…

OpenEuler20.3 安裝 Elasticsearch7.17

1、下載elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz.sha512 shasum -a 512 -c elasticsea…

單元測試知識總結

&#x1f345; 點擊文末小卡片 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 一、什么是單元測試&#xff1f; 單元測試是指&#xff0c;對軟件中的最小可測試單元在與程序其他部分相隔離的情況下進行檢查和驗證的工作&#xff0c;這里的…

python爬蟲筆記(一)

文章目錄 html基礎標簽和下劃線無序列表和有序列表表格加邊框 html的屬性a標簽&#xff08;網站&#xff09;target屬性換行線和水平分割線 圖片設置寬高width&#xff0c;height html區塊——塊元素與行內元素塊元素與行內元素塊元素舉例行內元素舉例 表單from標簽type屬性pla…

【mysql】centOS7安裝mysql詳細操作步驟!—通過tar包方式

【mysql】centOS7安裝mysql詳細操作步驟&#xff01; linux系統安裝mysql版本 需要 root 權限&#xff0c;使用 root 用戶進行命令操作。使用tar文件包&#xff0c;安裝&#xff0c;gz包也可以但是還需要配置用戶&#xff0c;tar包雖然大&#xff0c;但是全啊&#xff01; 1. …

[新能源]新能源汽車快充與慢充說明

接口示意圖 慢充接口為交流充電口&#xff08;七孔&#xff09;&#xff0c;快充接口為直流充電口&#xff08;九孔&#xff09;。 引腳說明 上圖給的是充電口的引腳圖&#xff0c;充電槍的為鏡像的。 慢充接口引腳說明 快充接口引腳說明 充電流程 慢充示意圖 慢充&…

Android第二次面試總結(項目拷打理論篇)

&#xff08;一&#xff09;理論基礎 LiveData 和 ViewModel 是 Android 架構組件中的重要部分&#xff0c;它們在構建響應式、生命周期感知的 Android 應用程序中發揮著關鍵作用。下面分別介紹它們的原理。 LiveData 原理 1. 概述 LiveData 是一種可觀察的數據持有者類&…