前言

        总结才是知识,作者习惯不好,不会总结,导致函数一旦不使用就会忘记怎么使用,特此写了本文,用于给自己一个复习的资料.

    提示:如果你是小白,每个代码请自己敲打。

一 pandas的介绍

Pandas is a python library used for working with data sets

It has functions for analyzing ,cleaning,exploring and mainpulating data

The name "pandas" has a reference to both "Panel Data" and "Python Data Analysis" and was created by Wes Mckinney in 2008

二 pandas Series

Series 是一个包含任何数据类型的数据的一维数组,就像表中的一列。(注意:首字母大写)

2.1 语法:

import pandas as pdpd.Series(data,index,dtype)
# 参数介绍
# data :一维数组(ndarray 类型)
# index:数据索引标签(可以是字符串类型、数字或者混合),默认是从0开始,可以重复
# dtype:数据类型,会根据数组内值类型返回结果
  • dtype :

数据类型    描述      内存占用        精度范围              使用场景

'i4'    32 位整数      4 字节        -2^31 至 2^31-1      小范围整数,如索引或计数器

'i8'    64 位整数      8 字节        -2^63 至 2^63-1      大范围整数,如时间戳或 ID

'f4'    32 位浮点数     4 字节        约 7 位有效数字        低精度计算,如图像处理

'f8'    64 位浮点数     8 字节        约 15 位有效数字     高精度计算,如科学分析

2.2 如何创建Series

import pandas as pd
import numpy as np
# 创建空的Series
s_1 = pd.Series() # 所有的值都是默认值 dtype:object# 使用numpy中的ndarray创建 Series
arry = np.random.randn(5)
s_2 = pd.Series(data=arry)# 使用列表创建
l_1 = [1,2,3]
s_3=pd.Series(data=l_1)# 使用字典创建
dict1 = {"小张":1,"小明":2,"小红":3}
s_4=pd.Series(data=dict1)# 使用标量创建
s_5= pd.Series(data=10,index=range(0,10))

2.3 针对Series的操作

  •  修改index
s_4.index=[0,1,2]print(s_4)
  • #删除特定的值
Series.drop(labels=None, *, axis=0, index=None,level=None, inplace=False, errors='raise')
## 参数
#   labels: 单个标签或标签列表。指定要从 Series 中删除的索引标签。
#   axis: 只能为 0 或 index,因为 Series 是一维数据结构,仅支持沿索引方向操作。
#   index: 替代参数,用于直接指定要删除的索引。与 labels 功能相同,但更直观。
#   level: 如果索引是 MultiIndex,则可以指定删除哪一层级的索引。
#   inplace: 布尔值。如果设置为 True,则直接在原 Series 上进行修改;否则返回一个新的 Series。
#   errors: 字符串。如果设置为 'ignore',当指定的标签不存在时不会抛出错误,而是忽略该标签;默认值为 'raise',会抛出错误。print(s_4.drop(labels=0))
print(s_4.drop(index=[0,1]))
print(s_4) # 因为inplace=False,因此不会改变Series# 切片操作-等同于列表
print(s_4[-2:])
  • 基本运算(+-*/)index为Key
## 注意:如果索引大小不同,则较小索引的Series中与较大Serise中相同index值为NON
#+
print(s_2+s_5)
print(s_2.add(s_5))
#-
print(s_2-s_5)
print(s_2.sub(s_5))
#*
print(s_2*s_5)
print(s_2.mul(s_5))
#/
print(s_2/s_5)
print(s_2.div(s_5))
#统计
print(s_2.describe())
  •  特殊方法——where (对于满足不等式的元素重新赋值)
#创建一个简单的 Series
s = pd.Series([10, 20, 30, 40, 50])#替换所有小于 30 的值为 NaN
result1 = s.where(s >= 30)
print("示例 1:")
print(result1)#替换所有小于 30 的值为 -1
result2 = s.where(s >= 30, -1)
print("\n示例 2:")
print(result2)#使用另一个 Series 作为替代值
alt_values = pd.Series([-1, -2, -3, -4, -5])
result3 = s.where(s >= 30, alt_values)
print("\n示例 3:")
print(result3)
  • concat 拼接两个Series
import pandas as pd
s1 = pd.Series([10, 20, 30, 40, 50])
s2 = pd.Series([11, 20, 30, 40, 50])
s3 = pd.concat([s1, s2], ignore_index=True)
print(s3)

三 DataFrame

之前介绍了 Series,在表格中相当于一列的值,但是我们操作表的时候时既有横向的还有列项的。

那现在就需要引入另外一个定义 DataFrame,当读取一个表格的时候会将数据直接转换成DataFrame格式

  • DataFrame:A Pandas DataFrame is a 2 dimensional data structure, like a 2 dimensional array ,or a table with rows and columns
import pandas as pdpd.DataFrame(data=None,index=None,columns=None)data:数据
index:设置行的名称
columns: 设置列的名称
  •  如何创建 DataFrmae
# 使用字典创建
import pandas as pd
import numpy as np
dict1  = {"xiaoming":[1,2,3],"xiaohong":[3,2,1]}
df1 = pd.DataFrame(dict1)# 使用array创建
data1 = np.arange(18).reshape(3,6)
df2 = pd.DataFrame(data1)

看了很多文章,在介绍什么是DataFrame时候会介绍如何探寻DataFrame中是数据,我认为可以放在数据处理和分析的时候介绍。

四 数据处理

4.1 数据的获取

因业务的不同,数据来源不同,因此获取数据的方式也不一样,数据来源:数据库,excel(xlwx,hmlx,csv),txt等格式

4.11 从数据库获取数据
import pyodbc
from contextlib import contextmanager
from concurrent.futures import ThreadPoolExecutor
import pandas as pd 
server = '替换成你的数据库所在的服务器名称'
database = '数据库名称'
username = '用户名'
password = '登陆密码'
driver = '{ODBC Driver 17 for SQL Server}'
# 不同版本的ODBC驱动
#driver = '{ODBC Driver 17 for SQL Server}'  # 最新版本
#driver = '{ODBC Driver 13 for SQL Server}'  # 较旧版本
#driver = '{SQL Server}'                     # 系统自带的基础驱动
#driver = '{SQL Server Native Client 11.0}' # Native Client驱动
# 创建连接字符串
conn_str = f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password}'# 创建连接池
pool = ThreadPoolExecutor(max_workers=5)@contextmanager
def get_connection():conn = pyodbc.connect(conn_str)try:yield connfinally:conn.close()def execute_query(query, params=None):with get_connection() as conn:cursor = conn.cursor()if params:cursor.execute(query, params)else:cursor.execute(query)return cursor.fetchall()
def query_to_dataframe(query, params=None):with get_connection() as conn:try:if params:df = pd.read_sql(query, conn, params=params)else:df = pd.read_sql(query, conn)return dfexcept (pyodbc.Error, pd.io.sql.DatabaseError) as e:print(f"Error executing query: {e}")return None
## 场景1:需要原始数据进行简单处理
raw_data = execute_query("SELECT count(*) FROM users")
user_count = raw_data[0][0]# 场景2:需要进行数据分析
df = query_to_dataframe("SELECT * FROM sales_data WHERE year = 2023")
monthly_sales = df.groupby('month').sum()# 场景3:需要自定义数据库操作
with get_connection() as conn:cursor = conn.cursor()cursor.execute("INSERT INTO logs VALUES (?, ?)", [timestamp, message])conn.commit()
# 场景4:从数据库获取数据并转换成 DataFrame格式
query = "select * from 表名称"
project = pd.read_sql(query, pyodbc.connect(conn_str))

如果你不知道怎么书写,请跟AI交流一下,让它帮你出一个注意

4.12 从excel(xlsx和csv)获取数据

注意:如果是公司Teams上的文件夹中的数据,如果想直接使用pandas读取,需要将Teams上的表格同步到自己的ONEDrive中,然后获取本地电脑中的文件位置,进行读取。会产生同步问题。

  • 相对路径和绝对路径

假设当前目录是 C:\Users\张三\project

相对路径示例
"data.xlsx"              #当前目录下的文件
"./data.xlsx"            #同上,./表示当前目录
"../documents/file.xlsx" #上级目录下的documents文件夹中的文件
"subfolder/image.png"   #当前目录下subfolder中的文件
"../../backup/data.sql" #上级的上级目录下backup文件夹中的文件

绝对路径:从文件系统根目录开始的完整路径

  • /和\
特性/ (正斜杠)\ (反斜杠)
原生系统Unix/Linux/macOSWindows
Python兼容性所有系统都支持 ✅仅Windows原生,但Python可处理
URL使用标准格式 ✅不适用 ❌
转义问题无问题 ✅需要转义 \\ 或使用 r""
跨平台性优秀 ✅较差 ⚠️
推荐度高度推荐 ✅特定场景使用

 因此路径有三种书写方式

/

"./data.xlsx"

\\".\\data.xlsx"
\r".\data.xlsx"
  • 函数 read_excel
df = pd.read_excel(
'data.xlsx',           # 文件路径
sheet_name=0,             # 可以是sheet的名称也可以是数字(0,1,2,3,,,,,)
header=0,                 # 标题行位置
index_col=None,           # 索引列
usecols=None,             # 指定读取的列
dtype=None,               # 数据类型
engine=None,              # 读取引擎
skiprows=None,            # 跳过的行数
nrows=None                # 读取的行数
)
  • 函数 read_csv
df = pd.read_csv('data.csv',                       # 文件路径或URLsep=',',                          # 分隔符delimiter=None,                   # 分隔符的别名header='infer',                   # 标题行位置names=None,                       # 列名列表index_col=None,                   # 索引列usecols=None,                     # 指定读取的列dtype=None,                       # 数据类型encoding=None,                    # 文件编码nrows=None,                       # 读取的行数skiprows=None                     # 跳过的行数
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85084.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85084.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85084.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法题(力扣每日一题)—改变一个整数能得到的最大差值

给你一个整数 num 。你可以对它进行以下步骤共计 两次&#xff1a; 选择一个数字 x (0 < x < 9). 选择另一个数字 y (0 < y < 9) 。 数字 y 可以等于 x 。 将 num中所有出现 x 的数位都用 y 替换。 令两次对 num 的操作得到的结果分别为 a 和 b 。 请你返回 a 和 b…

Kubernetes笔记

1.简介 Kubernetes的本质是一组服务器集群&#xff0c;它可以在集群的每个节点上运行特定的程序&#xff0c;来对节点中的容器进行管理。目的是实现资源管理的自动化&#xff0c;主要提供了如下的主要功能&#xff1a; 自我修复&#xff1a;一旦某一个容器崩溃&#xff0c;能够…

Flutter——数据库Drift开发详细教程(八)

目录 自定义 SQL 类型定义类型使用自定义类型在 Dart 中在 SQL 中 方言意识支持的 SQLite 扩展json1fts5地缘垄断 自定义 SQL 类型 Drift 的核心库主要以 SQLite3 为目标平台编写。这体现在Drift 开箱即用的SQL 类型上——这些类型由 SQLite3 支持&#xff0c;并新增了一些由 …

安卓远控工具 CRaxsRat v7.6 安装与使用教程(仅供合法测试学习)

在当今的信息安全领域&#xff0c;移动设备已成为重点关注对象。本文将介绍一款用于远程管理与教学研究的工具 —— CRaxsRat v7.6&#xff0c;并详细讲解其安装与使用流程。本教程仅供网络安全爱好者在合法授权环境下学习使用&#xff0c;严禁任何非法用途。 &#x1f50d; 一…

容器的本质是进程

前言 Linux 容器的本质&#xff0c;是一个被隔离和限制的进程。 与虚拟机不同&#xff0c;容器无需虚拟化一个完整的操作系统&#xff0c;所以它比虚拟机更轻量级&#xff0c;效率也更高。 Linux 容器通过 namespaces 技术来隔离容器的视图&#xff0c;使得容器进程只能看到…

LeetCode 第75题:颜色分类

给定一个包含红色、白色和蓝色、共n个元素的数组nums&#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排序。 使用整数0、1和2分布表示红色、白色和蓝色。 必须在不使用库内置sort函数的情况下解决这个问题。 示例1&a…

PHP基础-函数

函数是一段可重复使用的代码块&#xff0c;可以将一系列操作封装起来&#xff0c;使代码更加模块化、可维护和可重用&#xff0c;来大大节省我们的开发时间和代码量&#xff0c;提高编程效率。在PHP中你可以使用&#xff1a; 内置函数&#xff08;如 strlen()、array_merge()&a…

【FastAPI高级实战】结合查询参数与SQLModel Joins实现高效多表查询(分页、过滤、计数)

想象一下&#xff0c;你正在开发一个超酷的Web应用&#xff0c;比如一个博客平台或者一个在线商店。你的API不仅要能把数据&#xff08;比如文章列表、商品信息&#xff09;展示给用户&#xff0c;更要聪明到能理解用户的各种“小心思”&#xff1a;用户可能想看最新的文章、搜…

华为OD-2024年E卷-通过软盘拷贝文件[200分] -- python

问题描述&#xff1a; 有一名科学家想要从一台古董电脑中拷贝文件到自己的电脑中加以研究。但此电脑除了有一个3.5寸软盘驱动器以外&#xff0c;没有任何手段可以将文件持贝出来&#xff0c;而且只有一张软盘可以使用。因此这一张软盘是唯一可以用来拷贝文件的载体。科学家想要…

Keepalived 高可用,nginx + keepalived , lvs + keepalived、 数据库+keepalived

keepalived 官网 Keepalived 可以用来防止服务器单点故障的发生 # 原理 是基于VRRP协议实现的&#xff0c;当backup收不到vrrp包时&#xff0c;就认为master宕机了&#xff0c;这时就需要根据VRRP的优先级来选举一个backup 当master&#xff0c;就实现服务的HA&#xff08;高…

开疆智能Devicenet转ModbusTCP网关连接台达从站通讯模块配置案例

本案例是通过开疆智能Devicenet转ModbusTCP网关连接台达Devicenet从站通讯模块DVPDT02-H2的配置案例&#xff0c;网关作为ModbusTCP服务器和Devicenet主站&#xff0c;连接台达Devicenet从站&#xff0c; 配置过程&#xff1a; 首先配置Devicenet从站&#xff0c;先设置从站De…

网络NAT是什么

网络NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是一种用于计算机网络中的技术&#xff0c;主要目的是在私有网络与公有网络&#xff08;比如互联网&#xff09;之间转换IP地址&#xff0c;实现私有网络中的多台设备通过一个公网IP访问外…

React状态管理——react-redux

目录 一、redux介绍 二、安装 三、基本实现步骤 3.1 创建Action Types 3.2 创建counterAction 3.3 创建counterReducer 3.4 结合所有Reducer 3.5 创建store 3.6 入口文件中提供store 3.7 在组件中的使用 3.8 使用thunk实现异步支持 3.8.1 安装 3.8.2 在counterAct…

Java 零工市场小程序 | 灵活就业平台 | 智能匹配 | 日结薪系统 | 用工一站式解决方案

在就业形势如此严峻的情况下&#xff0c;很多小伙伴都会选择零工的工作方式来赚取外快&#xff0c;很多用人单位也会因为职为短暂空缺或是暂时人手不够而选择招用兼职人员。 而Java 作为企业级开发的主流语言&#xff0c;以其卓越的性能和稳定性著称。把零工的需求&#xff08…

数据可视化——一图胜千言

第04篇&#xff1a;数据可视化——一图胜千言 写在前面&#xff1a;大家好&#xff0c;我是蓝皮怪&#xff01;前面几篇我们聊了统计学的基本概念、数据类型和描述性统计&#xff0c;这一篇我们要聊聊数据分析中最直观、最有趣的部分——数据可视化。你有没有发现&#xff0c;很…

1.1 Linux 编译FFmpeg 4.4.1

一、安装编译工具 sudo apt install -y autoconf automake build-essential cmake git pkg-config nasm yasm libtool zlib1g-dev说明&#xff1a; autoconf&#xff1a;生成 configure 脚本&#xff0c;用于自动配置源码。automake&#xff1a;与 autoconf 配合&#xff0c;…

【图片识别改名】如何批量识别大量图片的文字并重命名图片,基于WPF和京东OCR识别接口的实现方案

应用场景 在企业文档管理、数字图书馆、电商商品管理等场景中&#xff0c;经常需要处理大量图片中的文字信息。例如&#xff1a; 电商平台需要将商品图片中的型号、规格等信息提取出来作为文件名图书馆需要将扫描的图书页面识别为文字并整理归档企业需要将纸质文档电子化并按…

简历模板2——数据挖掘工程师5年经验

姓名 / Your Name 数据挖掘工程师 | 5年经验 | 推荐/风控/图模型 &#x1f4de; 138-XXXX-XXXX | ✉️ your.emailexample.com | &#x1f310; github.com/yourname | &#x1f4cd; 北京 &#x1f3af; 个人简介 / Summary 5年大厂数据挖掘经验&#xff0c;硕士学历。擅长推…

CSS3 渐变效果

1. 引言 CSS3 渐变能够在指定颜色之间创建平滑过渡效果。这种设计元素不仅能为网页增添丰富的视觉层次&#xff0c;更是现代网页设计的重要组成部分。CSS3 提供两种主要的渐变类型&#xff1a;线性渐变(Linear Gradient) - 沿直线方向进行颜色过渡&#xff1b;径向渐变(Radial…

A Survey on 3D Gaussian Splatting——3D高斯领域综述

原文链接&#xff1a;[2401.03890] A Survey on 3D Gaussian Splatting 动态更新的GitHub仓库&#xff08;包含性能对比与最新文献追踪&#xff09;&#xff1a; https://github.com/guikunchen/3DGS-Benchmarks https://github.com/guikunchen/Awesome3DGS 摘要&#xff1…