【Python】pandas库---数据分析

news/2024/12/20 6:40:49/

  大学毕业那年,你成了社会底层群众里,受教育程度最高的一批人。 

前言 

  这是我自己学习Python的第四篇博客总结。后期我会继续把Python学习笔记开源至博客上。 

  上一期笔记有关Python的NumPy数据分析,没看过的同学可以去看看:
【Python】NumPy数据分析(二)_numpy里的维度是行数-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/hsy1603914691/article/details/142675036

pandas库 

1. pandas库建立在Numpy库之上,继承了Numpy库的功能。

2. Numpy库的主要对象是数组,而pandas库的主要对象是Series

3. 我们一般使用import pandas as pd,即用pd来简写pandas

创建Series对象 

1. 将一个列表作为参数,传入pandas库中的Series()方法即可创建一个Series对象。

2. 如果直接打印Series对象,那么会在左边给出索引、会在右边给出Series元素值。

3. 如果想单独打印索引,则使用Series.index,如果想单独打印Series元素值,则使用Series.values

4. Series对象也能进行索引和切片,和数组类似。 

python">import pandas as pd
s1=pd.Series([1,2,3,4,5])
print(s1)
print(s1.values)
print(s1.index)
#0    1
#1    2
#2    3
#3    4
#4    5
#dtype: int64
#[1 2 3 4 5]
#RangeIndex(start=0, stop=5, step=1)

自定义索引

1. pandasSeries对象的索引可以自定义,只需创建Series对象时在列表后面指定index

2. 对于Series对象,既可以使用标签索引,又可以使用位置索引。

3. 在pandas中,如果使用标签索引,则使用loc方法;如果使用位置索引,则使用iloc方法。

4. 另一种创建自定义索引Series对象的方法是:把字典作为参数传入Series()方法,那么字典中的键则变成标签,字典中的值则变成元素值。

5. 如果想知道一个标签是否在Series对象里面,可以使用成员运算符in(not in)

6. 利用位置索引切片时,左闭右开;利用标签索引切片时,左右都是闭区间。

python">import pandas as pd
s1=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
print(s1)
print(s1.values)
print(s1.index)
#a    1
#b    2
#c    3
#d    4
#e    5
#dtype: int64
#[1 2 3 4 5]
#Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
print(s1.loc['a'])
#a
print(s1.iloc[1])
#a

Series对象的计算

1. pandas库会根据Series对象索引一致来计算元素值。

2. 为了避免出现NAN值,我们需要用pandas库提供的方法来进行加减乘除,而不能直接通过 + - * / 这四个符号来计算。

3. +Series1.add(Series1,fill_value=0)

4. -Series1.sub(Series1,fill_value=0)

5. *Series1.mul(Series1,fill_value=0)

6. /Series1.div(Series1,fill_value=0)

7. pandas库还提供了describe()方法,整体描述Series对象。

8. pandas库还提供了apply()方法,用于接收Series对象需要调用的函数,把Series对象的元素值作为参数传函数。

9. 以上的方法并不改变原来的Series对象,而是返回一个新的Series对象。

python">import pandas as pd
s1=pd.Series({"小明":92,"小红":67,"小杰":70,"小丽":88,"小华":76})
s2=pd.Series({"小明":95,"小杰":85,"小宇":60,"小娟":79,"小彤":76})
s3=s1.add(s2,fill_value=0)
print(s3)
print(s1.describe())
s1=s1+5
print(s1)def grade_std(score):if score>=90:return 'A'elif (score<90 and score>=80):return 'B'elif (score<80 and score>=70):return 'C'else:return 'D'
s4=s1.apply(grade_std)
print(s4)

创建DataFrame对象

1. 在pandas库中,多个Series对象组成一个DateFrame对象。Series对象类似于数组,而DateFrame对象类似于表格。

2. DateFrame对象的不同列可以是不同的数据类型,所以DateFrame对象不止有横向的索引,也有列项的列名。

3. 创建DateFrame对象,可以使用pandas库的DataFrame()方法,往里面传入一个字典为参数,其中字典的键是列名,字典的值是不同的Series对象。

致谢

  感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能! 


http://www.ppmy.cn/news/1556590.html

相关文章

SAP抓取外部https报错SSL handshake处理方法

一、问题描述 SAP执行报表抓取https第三方数据,数据获取失败。 报错消息: SSL handshake with XXX.COM:449 failed: SSSLERR_SSL_READ (-58)#SAPCRYPTO:SSL_read() failed##SapSSLSessionStartNB()==SSSLERR_SSL_READ# SSL:SSL_read() failed (536875120/0x20001070)# …

MySQL LEFT JOIN 性能优化策略

文章目录 写在文章开头详解MySQL left join场景描述讲讲join的原理能不能说说这个LEFT JOIN如何加索引left join on 左右字段是否都需要加索引?为什么?你觉得针对联表查询还有那些优化技巧小结参考写在文章开头 连接查询算是日常比较常用的数据库关联关键字涉及左外连接、右…

排序算法深度好文(图解 + 代码解析 + 误区 QA )——学排序看这一篇就够了!!!

排序算法 一、概述 1. 内部排序 (1) 冒泡排序 (2) 选择排序 a. 简单选择排序 b. 堆排序 (3) 插入排序 a. 直接插入排序 b. 希尔排序 (4) 快速排序 快速排序 hoare 版本 快速排序挖坑法 优化一随机化快速排序 优化二中位数三分法 (5) 归并排序 (6) 基数排序 2. …

1095. 格子图2

题目描述 给出一个 n ∗ m n*m n∗m的格子图,你从左上角 ( 0 , 0 ) (0,0) (0,0)出发,每次只能向右走或者向下走,问有多少种方法能走到 ( n , m ) (n,m) (n,m)这个格子? 输入 一行,两个整数 n n n, m m m,其中 n < = 1000000 n<=1000000 n<=

【机器学习】乱象中寻序,虚实间求真:统计学连接数据与真理的桥梁

文章目录 统计学基础&#xff1a;揭开机器学习的数学面纱前言一、统计学的核心概念1.1 描述统计1.1.1 集中趋势的测量1.1.2 离散程度的测量1.1.3 数据分布与偏态 1.2 推断统计1.2.1 样本与总体1.2.2 假设检验1.2.3 置信区间 二、推断统计&#xff1a;从样本到总体的桥梁2.1 样本…

HCIA-Access V2.5_3_1_1_VLAN技术原理_VLAN概述_VLAN产生的原因

本章导读 接入网设备大部分工作在二层网络&#xff0c;VLAN的产生为传统的LAN网络注入了新的活力&#xff0c;引起了LAN应用的一场变革。 本章介绍了在交换机中怎样配置VLAN&#xff0c;详细描述了VALN数据帧在交换机与交换机之间传递过程中的变化情况。 你可以带着这些问题…

特征维度远大于样本量时候的过拟合问题

为什么特征维度远大于样本量会导致过拟合&#xff1f; 维度灾难 当特征维度远大于样本量时&#xff0c;会出现所谓的"维度灾难"(curse of dimensionality)。在高维空间中&#xff0c;数据变得非常稀疏&#xff0c;模型有太多的"自由度"来拟合这些稀疏的数…

CommandLineRunner 和 InitializingBean初始化

CommandLineRunner 和 InitializingBean 都是 Spring 框架中用于初始化 Bean 的机制&#xff0c;但它们有不同的使用场景和特点。 CommandLineRunner 作用&#xff1a; CommandLineRunner 是一个接口&#xff0c;它定义了一个方法 run(String... args)&#xff0c;这个方法会…