二、pandas入门


pandas入门

  • 前言
  • 一、Serise
    • 1.1 创建 Serise 对象
      • 1.1.1 自动生成索引的Serise 对象
      • 1.1.2 指定索引的Serise 对象
      • 1.1.3 元组跟字典创建Serise 对象
    • 1.2 Serise 的常用属性
    • 1.3 Serise 的常用方法
    • 1.4 Serise 的布尔索引
    • 1.5 Serise 的运算
  • 二、DataFrame
    • 2.1 创建DataFrame对象
      • 2.1.1 字典方式创建DataFrame对象
      • 2.1.2 列表+元祖方式创建DataFrame对象
    • 2.2 DataFrame常用属性跟方法
      • 2.2.1 基础演示
      • 2.2.2 DataFrame的布尔索引
      • 2.2.3 DataFrame的计算
    • 2.3 DataFrame索引操作
      • 2.3.1 set_index()函数 设置行索引名字
      • 2.3.2 加载数据的时候, 直接指定索引列
      • 2.3.3 reset_index()函数, 可以重置索引
      • 2.3.4 DataFrame-修改行列索引
        • 2.3.4.1 rename()函数, 可以对原有的行索引名 和 列名进行修改
        • 2.3.4.2 把 index 和 columns属性提取出来, 修改之后, 再赋值回去
    • 2.4 添加-删除-插入列
      • 2.4.1 添加列
      • 2.4.2 删除列
      • 2.4.3 插入列
  • 总结


前言

  • Pandas 中只有列 或者 二维表, 没有行的数据结构 (即使是行的数据, 也会通过列的方式展示)
  • pamdas 中分为两大结构 分别是:Serise 和 DataFrame

一、Serise

  • Series和Python中的列表非常相似,但是它的每个元素的数据类型必须相同

1.1 创建 Serise 对象

  • Series是一种类似于一维数组的对象,由下面两个部分组成:
    • values:一组数据(numpy.ndarray类型)
    • index:相关的数据行索引标签;如果没有为数据指定索引,于是会自动创建一个0到 N - 1 (N为数据的长度) 的整数型索引。

1.1.1 自动生成索引的Serise 对象

代码如下(示例):

import numpy as np
import pandas as pd# 创建numpy.ndarray对象
n1 = np.array([1, 2, 3])
print(n1)        # [1 2 3]
print(type(n1))  # <class 'numpy.ndarray'># 创建Series对象
s1 = pd.Series(data=n1)
print(s1)          # 0    1# 1    2# 2    3print(type(s1))    # dtype: int32# <class 'pandas.core.series.Series'># 直接创建
s2 = pd.Series(['banana', 42])
print(s2)            # 0    banana# 1        42
print(type(s2))      # dtype: object# <class 'pandas.core.series.Series'>

1.1.2 指定索引的Serise 对象

代码如下(示例):

s2 = pd.Series(['张三','男'], index = ['Name', 'Gender'])
print(s2)     # Name      张三# Gender     男# dtype: object

1.1.3 元组跟字典创建Serise 对象

代码如下(示例):

import pandas as pd# 使用元组
tuple1 = (1, 2, 3)
s1 = pd.Series(tuple1)
print(s1)    # 0    1# 1    2# 2    3# dtype: int64# 使用字典 字典中的key值是Series对象的索引值,value值是Series对象的数据值
dict1 = {'A': 1, 'B': 2, 'C': 3}
s2 = pd.Series(dict1)
print(s2)      # A    1# B    2# C    3# dtype: int64

1.2 Serise 的常用属性

属性说明
loc使用索引值取子集
iloc使用索引位置取子集
dtype或dtypesSeries内容的类型
TSeries的转置矩阵
shape数据的维数
sizeSeries中元素的数量
valuesSeries的值
indexSeries的索引值

1.3 Serise 的常用方法

方法说明
append连接两个或多个Series
corr计算与另一个Series的相关系数
cov计算与另一个Series的协方差
describe计算常见统计量
drop_duplicates返回去重之后的Series
equals判断两个Series是否相同
get_values获取Series的值,作用与values属性相同
hist绘制直方图
isinSeries中是否包含某些值
min返回最小值
max返回最大值
mean返回算术平均值
median返回中位数
mode返回众数
quantile返回指定位置的分位数
replace用指定值代替Series中的值
sample返回Series的随机采样值
sort_values对值进行排序
to_frame把Series转换为DataFrame
unique去重返回数组
value_counts统计不同值数量
keys获取索引值
head查看前5个值
tail查看后5个值

1.4 Serise 的布尔索引

代码如下(示例):

import pandas as pddf = pd.read_csv('文件路径.csv')
# 加入文件有八列的话 只有是True的那列能取到, 如果比八列多的话,多的部分用NAN填充
bool_values = [False, True, True, False, False, False, True, False]
df[bool_values]

1.5 Serise 的运算

  • Series 和数值型变量计算时,变量会与Series中的每个元素逐一进行计算
  • 两个Series之间计算时,索引值相同的元素之间会进行计算;索引值不同的元素的计算结果会用NaN值(缺失值)填充

二、DataFrame

  • DataFrame是一个表格型的结构化数据结构,它含有一组或多组有序的列(Series),每列可以是不同的值类型(数值、字符串、布尔值等)。
  • DataFrame是Pandas中的最基本的数据结构对象,简称df;可以认为df就是一个二维数据表,这个表有行有列有索引
  • DataFrame是Pandas中最基本的数据结构,Series的许多属性和方法在DataFrame中也一样适用.

2.1 创建DataFrame对象

2.1.1 字典方式创建DataFrame对象

代码如下(示例):

import pandas as pddict_data = {'id': [1, 2, 3],'name': ['张三', '李四', '王五'],'age': [18, 20, 22]
}
# 使用默认自增索引
# 字典中的key值是df对象的列名,value值是对应列的数据值
df1 = pd.DataFrame(data=dict_data)
print(df1)         #    id  name   age# 0   1   张三   18# 1   2   李四   20# 2   3   王五   22
print(type(df1))   # <class 'pandas.core.frame.DataFrame'># 通过index参数指定索引, columns参数指定列的位置
df2 = pd.DataFrame(data=dict_data, index=['A', 'B', 'C'], columns=['id', 'age', 'name'])
print(df2)         #    id  name   age# A   1   张三   18# B   2   李四   20# C   3   王五   22 

2.1.2 列表+元祖方式创建DataFrame对象

代码如下(示例):

list_data = [(1, '张三', 18),(2, '李四', 20),(3, '王五', 22)]
df3 = pd.DataFrame(data=list_data,index=['A', 'B', 'C'],  # 手动指定索引columns=['id', 'name', 'age'])  # 手动指定列名
print(df3)    #    id  name  age# A   1  张三   18# B   2  李四   20# C   3  王五   22

2.2 DataFrame常用属性跟方法

2.2.1 基础演示

代码如下(示例):

import pandas as pd# 加载数据集, 得到df对象
df = pd.read_csv('文件地址')print('=============== 常用属性 ===============')
# 查看维度, 返回元组类型 -> (行数, 列数), 元素个数代表维度数
print(df.shape)
# 查看数据值个数, 行数*列数, NaN值也算
print(df.size)
# 查看数据值, 返回numpy的ndarray类型
print(df.values)
# 查看维度数
print(df.ndim)
# 返回列名和列数据类型
print(df.dtypes)
# 查看索引值, 返回索引值对象
print(df.index)
# 查看列名, 返回列名对象
print(df.columns)
print('=============== 常用方法 ===============')
# 查看前5行数据
print(df.head())
# 查看后5行数据
print(df.tail())
# 查看df的基本信息
df.info()
# 查看df对象中所有数值列的描述统计信息
print(df.describe())
# 查看df对象中所有非数值列的描述统计信息
# exclude:不包含指定类型列
print(df.describe(exclude=['int', 'float']))
# 查看df对象中所有列的描述统计信息
# include:包含指定类型列, all代表所有类型
print(df.describe(include='all'))
# 查看df的行数
print(len(df))
# 查看df各列的最小值
print(df.min())
# 查看df各列的非空值个数
print(df.count())
# 查看df数值列的平均值
print(df.mean())

2.2.2 DataFrame的布尔索引

  • 跟Series一样

2.2.3 DataFrame的计算

  • 跟Series一样

2.3 DataFrame索引操作

2.3.1 set_index()函数 设置行索引名字

data = pd.read_csv('文件路径')  
data.head()data1 = data.set_index('写要设为索引的列名')# 如果加上 inplace=True, 则会修改原始的df对象
data.set_index(写要设为索引的列名', inplace=True)  
data.head()    # 原始的数据并没有发生改变.

2.3.2 加载数据的时候, 直接指定索引列

代码如下(示例):

import pandas as pd
pd.read_csv('文件路径', index_col = '要设为索引的列名')

2.3.3 reset_index()函数, 可以重置索引

代码如下(示例):

# 加上inplace, 就是直接修改 源数据.
data.reset_index(inplace=True) 
data.head()

2.3.4 DataFrame-修改行列索引

2.3.4.1 rename()函数, 可以对原有的行索引名 和 列名进行修改

代码如下(示例):

data = pd.read_csv('文件路径', index_col='要设置为索引的列名')
data.index[:5]  # 前5个行索引名data.columns[:5]  # 前5个列名# 手动修改下 行索引名 和 列名
idx_rename = {'旧列名': '新列名', '旧列名': '新列名'}
col_rename = {'旧列名': '新列名', '旧列名': '新列名'}# 通过rename()函数, 对原有的行索引名 和 列名进行修改
data.rename(index=idx_rename, columns=col_rename).head()
2.3.4.2 把 index 和 columns属性提取出来, 修改之后, 再赋值回去
  • index类型不能直接修改,需要先将其转成列表, 修改列表元素, 再整体替换

代码如下(示例):

data = pd.read_csv('文件路径', index_col='指定哪一列为索引列')# 提取出 行索引名 和 列名, 并转成列表.
index_list = data.index.tolist()
columns_list = data.columns.tolist()# 修改列表元素值
index_list[0] = '新列名'
index_list[1] = '新列名'columns_list[0] = '新行名'
columns_list[1] = '新行名'# 重新把修改后的值, 设置成 行索引 和 列名
data.index = index_list
data.columns = columns_list# 查看数据
data.head(5)

2.4 添加-删除-插入列

2.4.1 添加列

  • 通过 df [列名] = 值 的方式, 可以给df对象新增一列, 默认: 在 df 对象的最后添加一列

2.4.2 删除列

代码如下(示例):

data.drop('列名')  # 报错, 需要指定方式, 按行删, 还是按列删.
data.drop('列名', axis='columns')    # 按列删
data.drop('列名', axis=1)            # 按列删, 这里的1表示: 列data.head().drop([0, 1])                # 按行索引删, 即: 删除索引为0和1的行

2.4.3 插入列

  • 有点特殊, 没有inplace参数, 默认就是在原始df对象上做插入的

代码如下(示例):

# insert() 表示插入列.   参数解释: loc:插入位置(从索引0开始计数), column=列名, value=值
# 新一列的值  还可以由原表中的两列运算所得
data.insert(loc=1, column='列名', value=data['列名'] - data['列名'])
data.head()

总结

  • 文章总结了pandas中Series和DataFrame两个结构的属性和功能,以后碰到相关内容可以来这查看。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计Spark+Hive旅游景点推荐 旅游推荐系统 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据 景点规划

流程&#xff1a; 1.DrissionPage自动化爬虫框架采集旅游数据约10万条存入mysql数据库、.csv文件作为数据集(旅游数据、用户数据、评论数据)&#xff1b; 2.使用pandasnumpy或MapReduce对数据进行数据清洗&#xff0c;生成最终的.csv文件并上传到hdfs(含nlp情感分析)&#xff1…

【每日刷题】Day127

【每日刷题】Day127 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09; 2. LCR 022. 环形链表 II - 力扣&a…

软设9.20

1 已知一个文件中出现的各字符及其对应的频率如下表所示。若采用定长编码&#xff0c;则该文件中字符的码长应为()。若采用Hufman编码&#xff0c;则字符序列“face”的编码应为()。 1.&#xff08;&#xff09; A.2 B.3 C.4 D.5 2.&#xff08;&#xff09; A.110001001101…

工程师 - PFM介绍

在电子电路设计中&#xff0c;PFM&#xff08;Pulse Frequency Modulation&#xff0c;脉冲频率调制&#xff09;是一种调制技术&#xff0c;其主要特点是在负载变化时调整脉冲的频率&#xff0c;而保持脉冲的宽度&#xff08;时间长度&#xff09;相对恒定。与PWM&#xff08;…

详解Vue事件总线的原理与应用:EventBus

Vue 事件总线 - 组件通信的桥梁 引言 在 Vue.js 开发中&#xff0c;组件通信是一个重要的话题。Vue 提供了多种方式来实现不同组件之间的通信&#xff0c;譬如Props、 $emit、Ref实例、Vuex状态管理及事件总线等等&#xff0c;可谓是五花八门&#xff0c;它们之间使用各有优缺…

4款音频转文字在线转换工具帮你解锁新的记录模式。

越来越多的人都知道使用一些工具来将音频直接转换成文字&#xff0c;这样便省去了手动输入的麻烦。而且使用音频进行记录也能够提高工作的效率&#xff0c;像会议记录&#xff0c;课堂教学记录&#xff0c;采访录音等。如果大家有需要将自己的音频转成文字&#xff0c;可以试试…

STM32 使用 CubeMX 实现按键外部中断

目录 问题背景知识参考需要改什么注意尽量不要在中断函数使用 循环函数做延时中断函数中延时方法调试 问题 我想实现按钮触发紧急停止类似功能&#xff0c;需要使用按键中断功能。 背景知识 GPIO 点亮 LED。stm32cubemx hal学习记录&#xff1a;GPIO输入输出。STM32—HAL库 …

[c++进阶(八)]STL容器适配器之queue

1.前言 和stack一样&#xff0c;队列也没有把他放在容器的一栏里面&#xff0c;而是把他放在容器适配器的一栏。这也是因为queue是使用了别人的相关接口&#xff0c;空间然后来封装自己的内容&#xff0c;最后再给上层用户使用。 2.队列 队列的性质就是先进先出&#xff0c;他…

黑科技网址推荐:特殊功能的工具网址

1、【网站】WebRTC—— 点对点网络摄像头实时监控 &#xff1b; 网址&#xff1a;https://webcamera.cc/zh 先连接摄像头&#xff0c;将作为摄像头的设备进入摄像头页面&#xff0c;输入连接ID&#xff0c;点连接。 监控端进入监控页面&#xff0c;填入与摄像头相同的连接ID&…

Java中ArrayList和LinkedList的比较

注&#xff1a;Joshua Bloch 就是 LinkedList 的作者 在Java中&#xff0c;ArrayList和LinkedList都是常用的列表实现类&#xff0c;它们都实现了List接口&#xff0c;但在内部工作原理和性能方面有显著差异。 ArrayList&#xff1a;基于动态数组实现。随着元素的增加&#x…

spark之不同序列化对比

一&#xff0c;spark的rdd的序列话不同介绍 下面是使用不同序列化后的占用资源和数据大小 2&#xff0c;sparksql中序列化的区别 sparksql中使用序列化和不使用差别不大&#xff0c;英文sparksql中默认使用了encode自己实现的序列化方法&#xff0c;加上与不加序列化差别不大…

C++ day03

思维导图 头文件 #ifndef SEQLIST_H #define SEQLIST_Husing datatype int;class seqlist { private:datatype *ptr; // 动态数组指针int size; // 顺序表最大容量int len 0; // 当前长度public:void init(int n); // 初始化顺序表bool empty(); …

RflySim工具链常见问题答疑

1. RflySim结合硬件能不能实现无人机颜色巡线呢&#xff1f; 可以&#xff0c;内置有一个通过相机识别来攻击小球的实验&#xff0c;可见&#xff1a;【RflySim安装路径】\RflySimAPIs\8.RflySimVision\1.BasicExps\1-VisionCtrlDemos\e3_ShootBall&#xff0c;不过要想实现无人…

elasticsearch同步mysql方案

文章目录 1、1. 使用数据库触发器2. 使用定时任务3. 监听MySQL二进制日志&#xff08;binlog&#xff09;4. 使用数据管道5. 使用第三方工具或服务6. 编写自定义脚本注意事项 2、1. 使用Logstash步骤&#xff1a;示例配置&#xff1a; 2. 使用Debezium步骤&#xff1a; 3. 自定…

ES6标准---【九】【学习ES6标准看这一篇就够了!!!】

目录 以往ES6文章 JavaScript在浏览器中的加载 传统方法 加载规则 注意 顶部变量外部不可用 this关键字返回undefined JavaScript的循环加载 ES6模块的循环加载 块级作用域 let取代var 全局变量和线程安全 以往ES6文章 ES6标准---【一】【学习ES6看这一篇就够了&…

小小扑克牌算法

1.定义一个扑克牌类Card&#xff1a; package democard; public class Card {public String suit;//表示花色public int rank;//表示牌点数Overridepublic String toString() {return "{"suit rank"}";}//实例方法&#xff0c;初始化牌的点数和花色public…

【Redis入门到精通三】Redis核心数据类型(List,Set)详解

目录 Redis数据类型 ​编辑 1.List类型 &#xff08;1&#xff09;常见命令 &#xff08;2&#xff09;内部编码 2.Set类型 &#xff08;1&#xff09;常见命令 &#xff08;2&#xff09;内部编码 Redis数据类型 查阅Redis官方文档可知&#xff0c;Redis提供给用户的核…

【类型黑市】指针

大家好我是#Y清墨&#xff0c;今天我要介绍的是指针。 意义 指针就是存放内存地址的变量。 分类 因为变量本身是分类型的&#xff0c;我们学过的变量类型有 int, long long, char, double, string, 甚至还有结构体变量。 同样&#xff0c;指针也分类型&#xff0c;如果指针指向…

完美转发、C++11中与线程相关的std::ref

目录 模板中的万能引用 std::forward实现完美转发 C11中与线程相关的std::ref 线程函数参数 用函数指针作为线程函数 用lambda表达式作为线程函数 模板中的万能引用 void Func(int& x) {cout << "左值引用" << endl; } void Func(int&&am…

3. Internet 协议的安全性

3. Internet 协议的安全性 (1) 常用网络协议的功能、使用的端口及安全性 HTTP协议 功能:用于从服务器传输超文本到本地浏览器。端口:默认是80端口。安全性:不提供数据加密,存在数据泄露和中间人攻击风险。使用HTTPS协议(443端口)可以增强安全性。FTP协议 功能:实现文件的…