Python pandas

2023-11-11

  1. pandas是为了解决数据分析任务而创建的,纳入了大量的库和标准数据模型,提供了高效地操作大型数据集所需的工具。
  2. pandas 是第三方库。

【 1. pandas中的数据结构 】

1. Series 一维数组

  1. 类似于Python中的基本数据结构 list,区别是Series只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。就像数据库中的列数据。
  2. series 包含一个数组的数据(任何NumPy的数据类型)和一个与数组关联的数据标签,被叫做索引 。最简单的Series是由一个数组的数据构成:

① 默认创建

import pandas as pd
obj=pd.Series([4,7,-5,3])
print(obj)

运行结果:
在这里插入图片描述
Series的交互式显示的字符串表示形式是索引在左边,值在右边。因为我们没有给数据指定索引,一个包含整数0到N-1这里N是数据的长度)的默认索引被创建。

② values、index属性

import pandas as pd
obj=pd.Series([4,7,-5,3])
print(obj.values)
print(obj.index)

运行结果:
在这里插入图片描述

③ 自定义索引的Series

import pandas as pd
obj=pd.Series([4,7,-5,3],index=['d','b','a','c'])
print(obj)

运行结果:
在这里插入图片描述

④ 字典向series的传递

可以通过传递字典来从这些数据创建一个Series,只传递一个字典的时候,结果Series中的索引将是排序后的字典的键。

import pandas as pd
sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
obj=pd.Series(sdata)
print(obj)

运行结果:
在这里插入图片描述

⑤ 排序

对索引排序
import pandas as pd
obj = pd.Series(range(4), index=['d','a','b','c'])
print( obj.sort_index()  )

运行结果:
在这里插入图片描述

对值排序
import pandas as pd
obj=pd.Series([4,7,-5,3])
print( obj.sort_values()  )

运行结果:
在这里插入图片描述

⑥ 删除行

import pandas as pd
s =pd. Series([4.5,7.2,-5.3,3.6], index=['d','b','a','c'])
print( s ) 
print()
print( s.drop('c') ) #drop()返回的是一个新对象,原对象不会被改变。

运行结果:
在这里插入图片描述

⑦ 层次化索引

层次化索引

层次化索引(hierarchical indexing)是pandas的一项重要功能,它使我们能在一个轴上拥有多个(两个以上)索引级别。

import pandas as pd
s = pd.Series([4,7,-5,3,5,7,9,2,0,3], index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
print(s )

运行结果:
在这里插入图片描述

切片索引
import pandas as pd
s = pd.Series([4,7,-5,3,5,7,9,2,0,3], index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
print(s )
print()
print(s['b':'d'] )

运行结果:
在这里插入图片描述

内层选取
import pandas as pd
s = pd.Series([4,7,-5,3,5,7,9,2,0,3], index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
print(s )
print()
print(s[:,2] )

运行结果:
在这里插入图片描述

数据重塑
import pandas as pd
s = pd.Series([4,7,-5,3,5,7,9,2,0,3], index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
print(s )
print()
print(s.unstack() )

运行结果:
在这里插入图片描述

2. DataFrame 二维的表格型数据

很多功能与R中的data.frame类似,可以将DataFrame理解为Series的容器。
DataFrame是一个表格型的数据结构,是以一个或多个二维块存放的数据表格(层次化索引),DataFrame既有行索引还有列索引,它有一组有序的列,每列既可以是不同类型(数值、字符串、布尔型)的数据,或者可以看做由Series组成的字典。

① DataFrame 的创建

import pandas as pd
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
         'year':[2000,2001,2002,2001,2002],
         'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = DataFrame(dictionary)

运行结果:
在这里插入图片描述

② 修改行名

import pandas as pd
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
         'year':[2000,2001,2002,2001,2002],
         'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(dictionary,index=['one','two','three','four','five'])
print(frame)

运行结果:
在这里插入图片描述

③ 添加修改

import pandas as pd
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
         'year':[2000,2001,2002,2001,2002],
         'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(dictionary)
frame['year']=[0,0,0,0,0]
print(frame)

运行结果:
在这里插入图片描述

④ 添加Series类型

import pandas as pd
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
         'year':[2000,2001,2002,2001,2002],
         'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(dictionary)

value = pd.Series([1,3,1,4,6,8],index = [0,1,2,3,4,5])
frame['add1'] = value
print(frame)

运行结果:
在这里插入图片描述

⑤ 排序

对索引排序
import pandas as pd
frame = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]},index=[3,1,4,2])
print( frame  )
print()
print( frame.sort_index() ) #默认对行的索引排序
#frame.sort_index(axis=1, ascending=True)
#axis可为0或1,为0时对每行的索引排序;为1时对列的索引排序。
#ascending可为True或False,为True时升序,为False时降序。

运行结果:
在这里插入图片描述

对值排序
import pandas as pd
frame = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]},index=[3,1,4,2])
print( frame  )
print()
print( frame.sort_values(by='b') ) #DataFrame必须传一个by参数表示要排序的列

运行结果:
在这里插入图片描述

⑥ 删除

删除行
import pandas as pd
frame = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]},index=[3,1,4,2])
print( frame  )
print()
print( frame.drop(1) )

运行结果:
在这里插入图片描述

删除列
import pandas as pd
frame = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1],"c":[9,8,7,0]},index=[3,1,4,2])
print( frame  )
print()
print( frame.drop(["a"],axis=1) )

运行结果:
在这里插入图片描述

⑦ 算术运算(+,-,*,/)

DataFrame中的算术运算是df中对应索引的元素的算术运算,如果没有共同的索引,则用NaN代替。

import pandas as pd
frame1 = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1],"c":[1,2,3,4] },index=[3,1,4,2])
frame2 = pd. DataFrame({'b':[1, 2,  3, 4], 'a':[1, 2, 3, 4] },index=[3,1,4,2])
print( frame1+frame2 ) #对相同列索引进行算术运算,若有单独索引列,则结果列元素均为NaN
print()
print(frame1.add(frame2,fill_value=1) ) #也可对填充默认值

运行结果:
在这里插入图片描述

⑧ 去重

判断是否重复

DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行。

import pandas as pd
frame =pd. DataFrame({'k1': ['one'] * 3 + ['two'] * 4, 'k2': [1, 1, 2, 3, 3, 4, 4]})
print( frame )
print()
print(frame.duplicated() )

运行结果:
在这里插入图片描述

去除重复行
import pandas as pd
frame =pd. DataFrame({'k1': ['one'] * 3 + ['two'] * 4, 'k2': [1, 1, 2, 3, 3, 4, 4]})
print( frame )
print()
print(frame.drop_duplicates() )

运行结果:
在这里插入图片描述

3. Panel 三维的数组

可以理解为DataFrame的容器。

【 2. 读取CSV格式数据 】

在使用机器学习工具包对数据进行修改、探索和分析之前,我们必须先讲外部数据导入。使用Pandas导入数据比Numpy要容易。

# CSV格式内容:
Water Year,Rain (mm) Oct-Sep,Outflow (m3/s) Oct-Sep,Rain (mm) Dec-Feb,Outflow (m3/s) Dec-Feb,Rain (mm) Jun-Aug,Outflow (m3/s) Jun-Aug
1980/81,1182,5408,292,7248,174,2212
1981/82,1098,5112,257,7316,242,1936
1982/83,1156,5701,330,8567,124,1802
1983/84,993,4265,391,8905,141,1078
1984/85,1182,5364,217,5813,343,4313
1985/86,1027,4991,304,7951,229,2595
1986/87,1151,5196,295,7593,267,2826
1987/88,1210,5572,343,8456,294,3154
1988/89,976,4330,309,6465,200,1440
1989/90,1130,4973,470,10520,209,1740
1990/91,1022,4418,305,7120,216,1923
1991/92,1151,4506,246,5493,280,2118
1992/93,1130,5246,308,8751,219,2551
1993/94,1162,5583,422,10109,193,1638
1994/95,1110,5370,484,11486,103,1231
1995/96,856,3479,245,5515,172,1439
1996/97,1047,4019,258,5770,256,2102
1997/98,1169,4953,341,7747,285,3206
1998/99,1268,5824,360,8771,225,2240
1999/00,1204,5665,417,10021,197,2166
2000/01,1239,6092,328,9347,236,2142
2001/02,1185,5402,380,8891,259,3187
2002/03,1021,4366,272,7093,176,1478
2003/04,1165,4275,348,7493,315,2959
2004/05,1095,4547,309,7183,217,1799
2005/06,1046,4059,206,4578,188,1474
2006/07,1387,6391,437,10926,357,5168
2007/08,1225,5497,386,9485,320,3505
2008/09,1139,4941,268,6690,323,3189
2009/10,1103,4738,255,6435,244,1958
2010/11,1053,4521,265,6593,267,2885
2011/12,1285,5500,339,7630,379,5261
2012/13,1090,5329,350,9615,187,1797

1. CSV的读取 pd.read_csv()

从csv文件里导入数据,并储存在DataFrame中,只需要调用read_csv然后将文件的路径传进去即可。

# Reading a csv into Pandas.
# 如果数据集中有中文的话,最好在里面加上 encoding = 'gbk' ,以避免乱码问题。后面的导出数据的时候也一样。
import pandas as pd
df = pd.read_csv('uk_rain_2014.csv', header=0)
#header 关键字告诉Pandas哪些是数据的列名。如果没有列名的话就将它设定为 None。

2. 查看前n行 pd.head(n)

import pandas as pd
df = pd.read_csv('uk_rain_2014.csv', header=0)
print(df.head(5) )

运行结果:
在这里插入图片描述

3. 查看后n行 pd.tail(n)

import pandas as pd
df = pd.read_csv('uk_rain_2014.csv', header=0)
df.tail(5)

运行结果:
在这里插入图片描述

4. 查看总行数 len()

import pandas as pd
df = pd.read_csv('uk_rain_2014.csv', header=0)
print(len(df))

运行结果:
在这里插入图片描述

5. 修改列名 df.columns

import pandas as pd
df = pd.read_csv('0.csv', header=0)
df.columns = ['water_year','rain_octsep','outflow_octsep','rain_decfeb', 'outflow_decfeb', 'rain_junaug', 'outflow_junaug']
print(df.head(5) )

运行结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python pandas 的相关文章

  • Python 3.6 DateTime Strptime 返回错误,而 Python 3.7 运行良好

    我刚刚为日期数据创建了一个数据类型 它返回一个datetime datetime object 这是代码 import datetime class Date def new cls dateTime args kwargs return
  • 更改随机森林分类器的阈值

    我需要开发一个没有 或接近没有 假阴性值的模型 为此 我绘制了召回率 精度曲线 并确定阈值应设置为 0 11 我的问题是 如何定义模型训练时的阈值 稍后在评估时定义它是没有意义的 因为它不会反映新数据 X train X test y tr
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • 在Python中不断寻找用户输入

    我将如何编写一个始终寻找用户输入的 Python 程序 我想我希望有一个等于输入的变量 然后根据该变量的等于值会发生不同的情况 因此 如果变量是 w 那么它将执行某个命令并继续执行 直到收到另一个输入 例如 d 然后会发生不同的情况 但直到
  • 如何将 Google Cloud Storage 中的许多文件设为私有?

    我进行了很多研究 但无法为此提出解决方案 以下是我用来在 GCP 中公开所有文件的代码 def make blob public bucket name blob name Makes a blob publicly accessible
  • 如何使用 .pth 文件添加 Python 导入路径

    如果我将 pth 文件放入 site packages 中 则会给出一个ImportError 我不知道如何通过创建 pth 文件来导入 指在Python中导入 https stackoverflow com questions 69728
  • 如何仅选择数组中的第一列并对其求和?

    这是我的代码 import numpy as np contrainte1 1080 0 65 minutes tous les jours contrainte2 720 0 55 minutes du lundi au vendredi
  • 如何在python中确定过去的时区特定日期是否是夏令时?

    有没有办法检查特定时区在我指定的日期是否处于夏令时 test dt datetime year 2015 month 2 day 1 pst pytz timezone America Los Angeles test dt pst loc
  • python blpapi安装错误

    我试图根据 README 中的说明为 python 安装 blpapi 3 5 5 但是在运行时 python setup py install 我收到以下错误 running install running build running b
  • 从 Python 将分层 JSON 数据写入 Excel xls?

    我想将一些数据从 python 写入 xlsx 我目前将其存储为 JSON 但它从 Python 中输出什么并不重要 单个文章的 JSON 如下所示 Word Count 50 Key Words Blah blah blah Foo Fr
  • 更改 numpy 数组的结构强制给定值

    如何缩小栅格数据的比例4 X 6大小成2 X 3如果 2 2 像素内的任何元素包含 1 则大小强制选择 1 否则选择 0 import numpy as np data np array 0 0 1 1 0 0 1 0 0 1 0 0 1
  • Python ElementTree 获取带有命名空间的属性

    我试图访问 XML 中的 def 所以在这个例子中我会得到Evolus Common PlainTextV2作为输出 我似乎无法弄清楚如何获取具有名称空间的属性 如果我想得到id它工作得很好 Python for content ns in
  • Python 在 64 位 vista 上获取 os.environ["ProgramFiles"] 的错误值

    Vista64 计算机上的 Python 2 4 3 环境中有以下2个变量 ProgramFiles C Program Files ProgramFiles x86 C Program Files x86 但是当我运行以下命令时 impo
  • 多个列表和大小的所有可能排列

    在 python 中使用以下命令很容易计算简单的排列itertools permutations https docs python org 3 library itertools html itertools permutations 你
  • 如何使用 numpy 从一维数组创建对角矩阵?

    我正在使用 Python 和 numpy 来做线性代数 我表演了numpy对矩阵进行 SVD 以获得矩阵 U i 和 V 然而 i 矩阵表示为 1 行的 1x4 矩阵 IE 12 22151125 4 92815942 2 06380839
  • python lxml 使用iterparse编辑并输出xml

    我已经在 lxml 库上摆弄了一段时间了 也许我没有正确理解它 或者我错过了一些东西 但我似乎无法弄清楚在捕获某个 xpath 后如何编辑文件并且然后能够在逐个元素解析时将其写回到 xml 中 假设我们有这个 xml 作为示例
  • Matplotlib:检查空图

    我有一个循环加载并绘制一些数据 如下所示 import os import numpy as np import matplotlib pyplot as plt for filename in filenames plt figure i
  • 具有行业级约束的 SciPy 投资组合优化

    尝试在这里优化投资组合权重分配 通过限制风险来最大化我的回报函数 我可以毫无问题地通过简单的约束 所有权重之和等于 1 找到产生我的回报函数的优化权重 并做出另一个约束 即我的总风险低于目标风险 我的问题是 如何为每个组添加行业权重界限 我
  • 如何正确将 tflite_graph.pb 转换为 detector.tflite

    我正在使用tensorflow对象检测API使用tensorflow中的ssdlite mobilenet v2 coco 2018 05 09来训练自定义模型模型动物园 https github com tensorflow models
  • scikit-learn kmeans 聚类的初始质心

    如果我已经有一个可以作为初始质心的 numpy 数组 我该如何正确初始化 kmeans 算法 我正在使用 scikit learn Kmeans 类 这个帖子 具有选定初始中心的 k 均值 https stackoverflow com q

随机推荐

  • 【javaSE】 反射与反射的使用

    文章目录 反射的定义 反射的用途 反射基本信息 反射相关的类 Class类 反射机制的起源 Class类中的相关方法 反射示例 获得Class对象的三种方式 反射的使用 反射优点和缺点 反射重点总结 总结 反射的定义 Java的反射 ref
  • Ubuntu下“Ctrl+z”强行终止代码后再次运行,发生“段错误 (核心已转储)”

    文章目录 1 问题描述 2 解决方法 3 解释说明 参考链接 1 问题描述 在自己服务器上跑深度学习paper附带的源码 代码无问题 之前使用了Ctrl z强行停止 再次训练时发生 段错误 核心已转储 问题 2 解决方法 在终端输入 uli
  • 踩坑记录1——RK3588编译OpenCV

    这两天有在板卡上跑代码的需求 拿到了一块RK3588CPU的板子 型号是HINLINK的HK88 以后记录一下调试这个板子的问题 便于以后查看 0 基本信息 板卡系统 ArmBian 基于Ubuntu20 04 OpenCV版本 3 4 5
  • 皇后问题(回溯法初学推荐)

    皇后问题 First question 八皇后问题 在棋盘上放置8个皇后 使得它们互不攻击 此时每个皇后的攻击范围为同行同列和同对角线 要求找出所有解 如图所示 先上代码 include
  • 既约分数(蓝桥杯)

    既约分数 题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 如果一个分数的分子和分母的最大公约数是 1 这个分数称为既约分数 例如 3 4 1 8 7 1 都是既约分数 请问 有多少个既约分数 分子和分母都是
  • 转速测量

    1 转速测量的原理 转速测量的本质是计算因旋转引起的脉冲信号的频率 假设每旋转一周产生一个脉冲信号 如下所示是典型的逻辑时序 在脉冲信号的上升沿开始对采样时钟进行计数 在脉冲信号的下一次上升沿停止计数 即可获得被测物体旋转一周所需时间 此处
  • HSMS/SECS/GEM/GEM300半导体通讯协议介绍

    HSMS SECS GEM GEM300半导体通讯协议解决方案介绍 目录 SECS GEM协议通讯 1 目录 2 1 介绍 3 1 1 产品概述 3 1 1 1 高扩展性 4 1 2 通讯实现 4 1 2 2多主机实现 4 1 3 当前的S
  • 计算机桌面窗口移动有虚影,win7系统桌面出现残影影响心情?一招帮你解决问题...

    win7桌面出现残影怎么办 如下图所示 系统桌面出现残影算是一种比较常见的问题了 在桌面单击右键或者右键点击任务栏选择菜单后会在屏幕上留下某些选项的虚影 而且多数的情况下虚影在层叠窗口中是完全置顶的 就像一个污点看着就很不舒服 遮挡又遮挡不
  • 计算机组成与结构 第五版 复习 (三)

    复习内容 流水线时空图的画法 刷题目 第六章 中央处理器 控制器的功能 取指令 分析指令 执行指令 控制程序和数据的输入与结果输出 对异常情况和某些请求的处理 控制器的组成 程序计数器 PC 指令寄存器 IR 指令译码器或操作码译码器 脉冲
  • 【CEEMDAN-WOA-LSTM】完备集合经验模态分解-鲸鱼优化-长短时记忆神经网络研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 完备集合经验模态分解原理 1 2 鲸鱼优化 1 3 LSTM 2 运行结果 3 参考文献 4 Py
  • S7-200SMART案例分析——程序框架

    今天我想来谈一谈我们在写程序的一个框架 无论什么项目 思路和框架是我们首先应该考虑的事情 一个好的框架有助于我们前期的调试和后期的修改 我的思路如下 1 把设备功能化 每个功能独立成一个子程序 每个子程序之间进行交互 这样做 当程序比较大的
  • STM32HAL库RTC闹钟事件

    最近遇到stm32f系列看门狗不能关闭的事情 需要开启RTC闹钟定时唤醒喂狗 这里给RTC闹钟打一个标签把 我设置为每20秒开启一次闹钟 首先是HAL库的配置 配置时钟 选择下载方式 选择时钟和选择闹钟A 闹钟配置 开启中断 设置时钟 我的
  • 【大数据平台】基于Spark的气象数据分析

    研究背景与方案 1 1 研究背景 在大数据时代背景下 各行业数据的规模大幅度增加 数据类别日益复杂 给数据分析工作带来极大挑战 气象行业和人们的生活息息相关 随着信息时代的发展 大数据技术的出现为气象数据的发展带来机遇 基于此 本项目使用S
  • STM32之CAN ---CAN ID过滤器分析

    1 前言 在CAN协议里 报文的标识符不代表节点的地址 而是跟报文的内容相关的 因此 发送者以广播的形式把报文发送给所有的接收者 节点在接收报文时 根据标识符 CAN ID 的值决定软件是否需要该报文 如果需要 就拷贝到SRAM里 如果不需
  • 说话人验证中的得分归一化(score-normlization)

    在实际的说话人验证任务中 注册语音和测试语音之间的得分受到其之间的环境差别影响 为了更好的确定阈值 对于得分进行规整非常的有效 为什么需要说话人得分归一化 不同的说话人之间得分分布存在差异 相同的说话人得分也会有较大差异 尤其在语义内容不同
  • 【自然语言处理】关系抽取 —— MPDD 讲解

    MPDD 论文信息 标题 MPDD A Multi Party Dialogue Dataset for Analysis of Emotions and Interpersonal Relationships 作者 Yi Ting Che
  • 【五一创作】Scratch资料

    Scratch软件是免费的 免费的 免费的 任何需要花钱才能下载Scratch软件的全是骗子 1 什么是Scratch Scratch是麻省理工学院的 终身幼儿园团队 开发的一种图形化编程工具 是面向青少年的一款模块化 积木化 可视化的编程
  • Revit API无法翻转用纵坐标方式标注的尺寸

    代码如上所述 纵坐标方式的尺寸类型 其实是有翻转符号的 但是无法被调用 我看本站里有人用过 但使用的是CommandHandlerService 可Revit 2020API似乎没有提供这样的API 不知道我错过了什么
  • Mysql-substr函数应用

    substr函数格式 俗称 字符截取函数 格式1 substr string str int a int b 格式2 substr string str int a 解释 格式1 1 str 需要截取的字符串 2 a 截取字符串的开始位置
  • Python pandas

    pandas是为了解决数据分析任务而创建的 纳入了大量的库和标准数据模型 提供了高效地操作大型数据集所需的工具 pandas 是第三方库 1 pandas中的数据结构 1 Series 一维数组 类似于Python中的基本数据结构 list