南京网站建设培训班/百度网盘在线观看资源
内容目录
- 一、pandas介绍
- 二、数据加载和写出
- 三、数据清洗
- 四、数据转换
- 五、数据查询和筛选
- 六、数据统计
- 七、数据可视化
pandas 是一个 Python提供的快速、灵活的数据结构处理包,让“关系型”或“标记型”数据的交互既简单又直观。
官网地址: https://pandas.pydata.org/
一、pandas介绍
pandas 有两个主要数据结构,Series(一维)和 DataFrame(二维), 可以处理多种类型的数据.
主要功能:
- 处理缺失数据(以 NaN 表示),无论是浮点数还是非浮点数数据 大小可变性:可以向 DataFrame 和更高维度的对象插入和删除列
- 自动和显式数据对齐:对象可以显式地对齐到一组标签,或者用户可以简单地忽略标签,让 Series、DataFrame
- 等自动在计算中对齐数据 按组操作功能: 用于对数据集执行分割-应用-合并操作,既可用于聚合数据,也可用于转换数据 多源数据转换: 将其他
- Python 和 NumPy 数据结构中的不规则、不同索引的数据转换为 DataFrame 对象
- 智能的基于标签的切片、花式索引和大数据集的子集划分 直观的数据集合并和连接 灵活的数据集重塑和旋转
- 轴的分层标记(每个刻度可以有多个标签) 强大的 IO 工具,用于从(CSV 和分隔符)加载数据,从 Excel
- 文件、数据库加载数据,以及保存/加载超快速 HDF5 格式的数据 时间序列的功能:日期范围生成和频率转换,移动窗口统计,日期偏移和滞后。
Pandas结构:
import pandas as pddf = pd.DataFrame({"Name": ["Braund, Mr. Owen Harris","Allen, Mr. William Henry","Bonnell, Miss. Elizabeth",],"Age": [22, 35, 58],"Sex": ["male", "male", "female"],}
)print(df)# Name Age Sex
# 0 Braund, Mr. Owen Harris 22 male
# 1 Allen, Mr. William Henry 35 male
# 2 Bonnell, Miss. Elizabeth 58 female
其中DataFrame的每一列都是Series对象
print(type(df['Name']))
# <class 'pandas.core.series.Series'>
二、数据加载和写出
pandas支持多种形式的数据格式, 不仅可以在代码中显示的加载列表、数组等, 还可以引入外部文件, 支持的外部文件格式也较多
加载时调用对应的方法==read_xxx()==
# 数据加载
df = pd.read_excel('./static/pd_file.xlsx')
写出时调用对应的方法to_xxx()
df = pd.to_excel('./static/pd_file_new.xlsx')
三、数据清洗
- dropna(axis=0, how=‘any’): 删除含有缺失值的行或列。
data = {'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan], 'C': [1, 2, 3]}
df = pd.DataFrame(data)# 删除含有缺失值的行
df_cleaned = df.dropna(axis=0, how='any')
print(df_cleaned)
- fillna(value=None, method=‘ffill’, …): 用指定值或方法填充缺失值。
# 使用前一个有效值填充缺失值
df_filled = df.fillna(method='ffill')
print(df_filled)
drop(labels, axis=0): 删除指定行或列。
# 删除第一行
df_dropped_row = df.drop(0, axis=0)
print(df_dropped_row)# 删除某列,例如 'B' 列
df_dropped_col = df.drop('B', axis=1)
print(df_dropped_col)
- replace(to_replace=value, value=None): 替换指定值。
# 将缺失值替换为0
df_replaced = df.replace(np.nan, 0)
print(df_replaced)
- rename(columns={old_name: new_name}, index={…}): 重命名列名或索引。
df_renamed = df.rename(columns={'A': 'NewA', 'B': 'NewB', 'C': 'NewC'})
print(df_renamed)
四、数据转换
- 生成列
# 对a列按照'|'分割, 取1、9、10列作为新列
df[['city','poi_1', 'poi_2']] = df['a'].str.split('|', expand=True)[[0,8,9]]
- 删除列
# 删除a列
df = df.drop(columns=['a'])
- 转换列格式
# 修改dt类型为datetime格式
df['dt'] = pd.to_datetime(df['dt'])
# 处理日期为day、month、year
df['dt_day'] = df['dt'].dt.strftime('%Y-%m-%d')
df['dt_month'] = df['dt'].dt.strftime('%Y-%m')
df['dt_year'] = df['dt'].dt.year
- pivot(index, columns, values): 数据透视表操作。
# 示例数据
data = {'Category': ['Fruit', 'Fruit', 'Vegetable', 'Fruit', 'Vegetable'],'Product': ['Apple', 'Banana', 'Carrot', 'Orange', 'Potato'],'Sales': [100, 200, 150, 300, 250]
}df = pd.DataFrame(data)# 使用pivot创建数据透视表,以'Category'为行,'Product'为列,'Sales'为值
pivot_table = df.pivot(index='Category', columns='Product', values='Sales')
print(pivot_table)
- pivot_table(index, values, aggfunc=np.mean, …): 创建带有聚合函数的数据透视表。
data = {'City': ['New York', 'New York', 'San Francisco', 'San Francisco', 'Chicago', 'Chicago'],'Month': ['Jan', 'Feb', 'Jan', 'Feb', 'Jan', 'Feb'],'Temperature': [5, 8, 12, 14, 3, 6]
}df = pd.DataFrame(data)# 使用pivot_table计算每个月各城市的平均温度
pivot_table = df.pivot_table(index='Month', columns='City', values='Temperature', aggfunc=np.mean)
print(pivot_table)
- apply(func, axis=0): 应用函数到DataFrame的行或列上。
# 示例DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})# 定义一个计算平方的函数
def square(x):return x**2# 对DataFrame的每一列应用square函数
squared_df = df.apply(square, axis=0)
print(squared_df)
- groupby(by=None): 根据某一列或多列进行分组。
data = {'Category': ['Fruit', 'Fruit', 'Vegetable', 'Fruit', 'Vegetable'],'Sales': [100, 200, 150, 300, 250]
}df = pd.DataFrame(data)# 按'Category'列进行分组,并计算'Sales'的总和
grouped_sales = df.groupby('Category')['Sales'].sum()
print(grouped_sales)
五、数据查询和筛选
- loc()方法
DataFrame和Series对象的一种索引器,允许基于行和列的标签来选择数据。
语法: df.loc[row_selection, column_selection],其中row_selection和column_selection可以是单个标签、列表、切片或布尔数组,- 特性:
- 支持“前闭后闭”的区间选择,意味着如果用切片指定范围,两端 的标签都会被包含在内。
- 可以用来选取单行、单列、多行、多列或行与列的组合。
- 不仅可以用于选择数据,还可以用于修改现有数据或插入新数据。
- 特性:
import pandas as pddata = {'Country': ['China', 'United States', 'India'],'Population': [1404200000, 332639102, 1393409038],'Area (sq km)': [9600000, 9372610, 3287263]
}
df = pd.DataFrame(data)
df.set_index('Country', inplace=True)
选取单列
population = df.loc[:, 'Population']
选取多列
subset = df.loc[:, ['Population', 'Area (sq km)']]
选取特定行
china_data = df.loc['China']
选取行范围
us_to_india = df.loc['United States':'India']
布尔索引
large_countries = df.loc[df['Population'] > 1000000000]
修改数据
df.loc['China', 'Population'] = 1444200000 # 更新中国人口数据
插入新数据
df.loc['Brazil'] = ['Brazil', 213993437, 8511965] # 新增巴西数据
- iloc()方法
DataFrame和Series对象的另一个重要索引器,它提供了基于整数位置的数据选择和修改功能。与loc基于标签索引不同,iloc完全依赖于数据在结构中的物理位置
语法:df.iloc[row_selection, column_selection],其中row_selection和column_selection可以是整数、整数列表、切片或布尔数组,来指定数据的位置- 特性:
- 支持整数索引的“左闭右开”区间选择,意味着切片操作的结束位置是不包含在内的。
- 适合于快速按位置访问或修改数据,尤其是在处理没有明确标签或者标签不如位置重要时。
- 不能直接使用列名或行标签进行索引,只能使用整数位置。
- 特性:
选取单个元素
element = df.iloc[1, 2] # 选取第二行第三列的元素
选取整行或整列
second_row = df.iloc[1, :] # 选取第二行
third_column = df.iloc[:, 2] # 选取第三列
选取多行多列
subset = df.iloc[0:2, 1:3] # 选取前两行的第二列至第三列
切片选择
last_two_rows = df.iloc[-2:] # 选取最后两行的所有列
布尔索引(结合.iloc需先转换为位置)
bool_index = df['A'] > 1
position_based_bool_index = df.index[bool_index]
rows_with_A_gt_1 = df.iloc[position_based_bool_index]
-
loc()和iloc()的区别
- loc是通过标签来访问数据,而iloc是通过整数位置来访问数据
- 在使用loc时,选择的行和列都是闭区间,即包括开始和结束位置;而在使用iloc时,选择的行和列都是左闭右开区间,即包括开始位置但不包括结束位置。
- loc可以使用布尔数组进行筛选,而iloc不支持。
- loc可以使用标签名和标签列表作为索引,而iloc只能使用整数作为索引。
- loc和iloc都支持使用冒号(:)来选择所有行或列,但是在使用loc时,冒号前后必须加上标签名或标签列表;而在使用iloc时,冒号前后可以省略,表示选择所有行或列。
-
使用案例
# 数据查询
# 查询某列
city = df['city']# 按索引
# 查询第二列的所有行, 其中第一个为行, 第二个为列
name = df.iloc[:,1]# 获取某些列
c1 = df[['city','poi_1']]
c2 = df.iloc[:,1:3]
查询切片
# 按索引
# 查询第二列的所有行, 其中第一个为行, 第二个为列
name = df.iloc[:,1]
查询指定列
数据查询
# 数据查询
city = df['city']
# 按索引
name = df.iloc[:,1]
# 获取某些列
c1 = df[['city','poi_1']]
c2 = df.iloc[:,1:3]
print(name.head(5))
print(c2.head(5))
数据筛选
# 索引筛选
# 筛选前二十行数据
print(df.iloc[0:21, :])
# 或者
print(df.head(20))# 按条件筛选
# 获取广州的记录
df.set_index('city', inplace=True)
print(df.loc['广州'])# 获取第二列='广州市正骨医院'的记录
print(df.loc[df['poi_1'] == '广州市正骨医院', :])
六、数据统计
- sum(), mean(), median(), min(), max(): 计算总和、均值、中位数、最小值、最大值。
# 示例数据
data = {'A': [1, 2, 3, 4, 5],'B': [5, 15, 10, 20, np.nan],'C': [7, 8, 9, 10, 11]}df = pd.DataFrame(data)# 计算'B'列的总和、均值、中位数、最小值、最大值
total_B = df['B'].sum()
mean_B = df['B'].mean()
median_B = df['B'].median()
min_B = df['B'].min()
max_B = df['B'].max()print(f"Sum of B: {total_B}")
print(f"Mean of B: {mean_B}")
print(f"Median of B: {median_B}")
print(f"Min of B: {min_B}")
print(f"Max of B: {max_B}")
- count(): 非NA值的数量。
# 计算每列的非空值数量
non_na_counts = df.count()
print(non_na_counts)
- corr(): 计算相关系数矩阵。
# 计算相关系数矩阵
correlation_matrix = df.corr()
print(correlation_matrix)
- cov(): 计算协方差矩阵。
# 计算协方差矩阵
covariance_matrix = df.cov()
print(covariance_matrix)
- sort_values(by, ascending=True): 根据一列或多列的值排序。
# 按'A'列升序排序
sorted_df = df.sort_values(by='A', ascending=True)
print(sorted_df)
- rank(method=‘average’): 计算每行或每列的排名。
# 计算'B'列的排名
ranked_df = df['B'].rank(method='average')
print(ranked_df)
七、数据可视化
使用Matplotlib的基本绘图
首先确保已经安装了matplotlib库,如果没有安装可以通过pip安装:pip install matplotlib。
import pandas as pd
import matplotlib.pyplot as plt# 示例数据
data = {'Year': [2000, 2001, 2002, 2003, 2004],'Sales': [10, 15, 20, 25, 30]}
df = pd.DataFrame(data)# 绘制折线图
plt.figure(figsize=(10, 5))
df.plot(kind='line', x='Year', y='Sales', color='blue')
plt.title('Sales Over Years')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.show()
总之, pandas的功能十分丰富且强大, 这里只是列举了冰山一角, 更多内容可以查看官网.
相关文章:

python数据文件处理库-pandas
内容目录 一、pandas介绍二、数据加载和写出三、数据清洗四、数据转换五、数据查询和筛选六、数据统计七、数据可视化 pandas 是一个 Python提供的快速、灵活的数据结构处理包,让“关系型”或“标记型”数据的交互既简单又直观。 官网地址: https://pandas.pydata.o…...

stm32 h5 串口采用DMA循环BUFF接收数据
当使用STM32H5系列的MCU进行串口(USART)通信,并希望使用DMA(Direct Memory Access)进行循环缓冲区(Circular Buffer)接收数据时,你需要进行以下配置步骤: 初始化串口&…...

海外媒体通稿:9个极具创意的旅游业媒体推广案例分享-华媒舍
如今,旅游业正迅速发展,媒体推广成为吸引游客的关键。为了更好地展示旅游目的地,许多创意而富有创新的媒体推广策略应运而生。本文将介绍九个极富创意的旅游业媒体推广案例,为广大从业者带来灵感和借鉴。 1. 视频系列:…...

接口自动化框架封装思想建立(全)
httprunner框架(上) 一、什么是Httprunner? 1.httprunner是一个面向http协议的通用测试框架,以前比较流行的是2.X版本。 2.他的思想是只需要维护yaml/json文件就可以实现接口自动化测试,性能测试,线上监…...

char [] 赋新值
在C语言中,字符数组(char [])的值可以通过多种方式进行赋值。以下是一些常见的方法: 1、直接初始化: char str[50] "Hello, World!";2、使用strcpy()函数: char str[50]; strcpy(str, "…...

matlab计算图像信噪比SNR
直接上源码: close all clear all clc% 读取图像 I = imread(lena.bmp);I = rgb2gray(I); J =imnoise(I, salt & pepper, 0.001);...

DP读书:如何使用badge?(开源项目下的标咋用)
最近在冲论坛,很少更一些内容了。但遇到了一个真的有趣的: 开源项目下,蓝蓝绿绿的标是怎么用的呢? 这是我的主页Readme,在看一些NXP的主仓时,突然发现没有这个玩,就自己整了个 再比如我的CSDN专…...

使用JavaScript实现网页通知功能
如何使用js来实现网页通知功能。即使在用户浏览其他页面时,也能向他们推送通知信息。 废话不多说直接上代码 function showAutoNotification() {if ("Notification" in window) {Notification.requestPermission().then(function(permission) {if (permis…...

前端--导出
这边记录我们公司后端做的导出接口和前端是如何对接的 这边的技术栈是: 1: react 2: fetch 第一步:简单封装--导出界面 import { DrawerForm } from ant-design/pro-components; import { CloseOutlined } f…...

【数据库系统概论】触发器
【数据库系统概论】触发器 概述 在数据库系统中,触发器(Trigger)是一种特殊的存储过程,当特定事件在数据库表上发生时,会自动执行。触发器主要用于确保数据的完整性、一致性和实现复杂的业务规则。触发器是由用户定义…...

小白跟做江科大32单片机之按键控制LED
原理部分 1.LED部分使用的是这样的连接方式 2.传感器模块的电路图 滤波电容如果接地,一般用于滤波,在分析电路时就不用考虑。下面这个电路就是看A端和B端哪端的拉力大,就能把电压值对应到相应的电压值 比较器部分 如果A端电压>B端电压&am…...

每天写java到期末考试(6.6)-java文件输入输出流实验
1、用字节流读写二进制文件 要求:用DataOutputStreamFileOutputStream类将1,2,…,100,这100个数字写入到文件 d:\out1.bin里,然后再用DatalnputStreamFilelnputStream类将d:\out1.bin的内读出来,并输出到屏幕上。 用DataOutputStreamFileOutputStream写入二进制数据时,直接调…...

Word2021中的The Mathtype DLL cannot be found问题解决(office 16+mathtype7+非初次安装)
问题描述,我的问题发生在word中无法使用自定义功能区中的mathtype 我的环境是:W11Word2021mathtype7 因为我是第二次安装mathtype7,所以我怀疑是因为没有卸载干净,于是我参考了下面这篇文章的做法 参考文章 1.首先重新卸载当前的…...

【Android面试八股文】在Java中传参数时是将值进行传递,还是传递引用?
在Java中传参数时是将值进行传递,还是传递引用? 这道题想考察什么? 是否了解什么是值传递和引用传递与真实场景使用,是否熟悉什么是值传递和引用传递在工作中的表现是什么? 考察的知识点 什么是值传递和引用传递的概念,两者对开发中编写的代码的影响 考生应该如何回…...

神经网络 torch.nn---Linear Layers(nn.Linear)
torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn — PyTorch 2.3 documentation nn.Linear torch.nn.Linear(in_features, out_features, biasTrue, deviceNone, dtypeNone) 参数: in_features - 每个输入样本的大小out_features - 每个输出…...

PPT视频如何16倍速或者加速播放
有两种方式,一种是修改PPT本身,这种方式非常繁琐,不太推荐,还有一种就是修改视频本身,直接让视频是16倍速的视频即可。 如何让视频16倍速,我建议人生苦短,我用Python,几行代码&…...

【ai】DeepStream 简介
NVIDIA Metropolis 平台。 NVIDIA 大都会 利用视觉 AI 将来自数万亿物联网设备的数据转化为有价值的见解。 NVIDIA Metropolis 是一个应用程序框架、一套开发工具和合作伙伴生态系统,它将视觉数据和 AI 结合在一起,以提高各行各业的运营效率和安全性。它有助于理解数万亿个…...

如何学习使用淘宝API?淘宝API运营场景
学习使用淘宝API涉及对其功能、分类、调用方法及实际应用的综合理解。下面按部分详细解释如何系统地学习和掌握淘宝API的使用: 淘宝API接口入门 了解淘宝开放平台:淘宝开放平台为开发者提供了一个可以与淘宝数据进行交互的平台,涵盖了丰富的A…...

Java 面试题:Java 的动态代理是基于什么原理?
编程语言通常有各种不同的分类角度,动态类型和静态类型就是其中一种分类角度,简单区分就是语言类型信息是在运行时检查,还是编译期检查。 与其近似的还有一个对比,就是所谓强类型和弱类型,就是不同类型变量赋值时&…...

Python logging 模块详解
Python 的 logging 模块提供了一个强大而灵活的日志系统。它是 Python 标准库的一部分,因此可以在任何 Python 程序中使用。logging 模块提供了许多有用的功能,包括日志消息的级别设置、日志消息的格式设置、将日志消息输出到不同的目标,以及…...

http://account.battlenet.com.cn
http://account.battlenet.com.cn 魔兽战网 短信验证 查了下,我老早以前账号还在,纪念下,少玩游戏。...

java第二十课 —— 面向对象习题
类与对象练习题 编写类 A01,定义方法 max,实现求某个 double 数组的最大值,并返回。 public class Chapter7{public static void main(String[] args){A01 m new A01();double[] doubleArray null;Double res m.max(doubleArray);if(res !…...

Flask的模块化实践
既作为前端,又作为后端的我,写flask写了那么多行了,其实它们属于不同的模块,比如登录,注册,聊天,用户画像,那我觉得有必要分一下了,系统化的处理一下,不然找个…...

锁存器(Latch)的产生与特点
Latch 是什么 Latch 其实就是锁存器,是一种在异步电路系统中,对输入信号电平敏感的单元,用来存储信息。锁存器在数据未锁存时,输出端的信号随输入信号变化,就像信号通过一个缓冲器,一旦锁存信号有效&#…...

搜维尔科技:「案例」Faceware电影中面部动画的演变历程
面部动画是电影中角色表演的一个重要方面,尤其是在严重依赖电子动画、化妆效果和动作捕捉系统的奇幻电影中。在《龙与地下城:盗贼荣誉》电影中,龙裔角色的面部动画是一个复杂的系统,使该生物在大屏幕上栩栩如生。该系统依赖于一种…...

特征工程技巧—Bert
前段时间在参加比赛,发现有一些比赛上公开的代码,其中的数据预处理步骤值得我们参考。 平常我们见到的都是数据预处理,现在我们来讲一下特征工程跟数据预处理的区别。 数据预处理是指对原始数据进行清洗、转换、缩放等操作,以便为…...

更改 Docker 的默认存储位置
记录一下使用 Docker 遇到的问题,Docker 也用得比较多,最近发现根目录所在磁盘快满了,发现是 Docker 默认会将镜像和容器等数据保存在目录 /var/lib/docker 目录下,我们可以更改 Docker 的默认存储位置,比如改到数据盘…...

搜索与图论:图中点的层次
搜索与图论:图中点的层次 题目描述参考代码 题目描述 输入样例 4 5 1 2 2 3 3 4 1 3 1 4输出样例 1参考代码 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010;int n, m; int h[N], e[N]…...

NLP入门——数据预处理:编码规范化
编码规范化 在计算机中,我们需要将字符与字节序列之间建立起映射关系,这个过程被称为编码。有许多不同的编码方式,例如 ASCII、UTF-8、UTF-16 和 GBK 等。这些编码方式会将每个字符编码为一个或多个字节,以便于在计算机、网络和其…...

代码随想录算法训练营第四十八天| 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数
70. 爬楼梯 (进阶) 题目链接:70. 爬楼梯 (进阶) 文档讲解:代码随想录/爬楼梯 (进阶) 状态:已完成(0遍) 解题过程 这几天博主忙着面试和入职&am…...