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

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

前言

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

上一期笔记有关Python的NumPy数据分析,没看过的同学可以去看看:
【Python】NumPy数据分析(二)_numpy里的维度是行数-CSDN博客https://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. pandas中Series对象的索引可以自定义,只需创建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对象。

致谢

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

相关推荐
炸炸鱼.25 分钟前
Python 操作 MySQL 数据库
android·数据库·python·adb
_深海凉_1 小时前
LeetCode热题100-颜色分类
python·算法·leetcode
AC赳赳老秦1 小时前
OpenClaw email技能:批量发送邮件、自动回复,高效处理工作邮件
运维·人工智能·python·django·自动化·deepseek·openclaw
zhaoshuzhaoshu2 小时前
Python 语法之数据结构详细解析
python
AI问答工程师2 小时前
Meta Muse Spark 的"思维压缩"到底是什么?我用 Python 复现了核心思路(附代码)
人工智能·python
zfan5203 小时前
python对Excel数据处理(1)
python·excel·pandas
小饕3 小时前
我从零搭建 RAG 学到的 10 件事
python
老歌老听老掉牙3 小时前
PyQt5+Qt Designer实战:可视化设计智能参数配置界面,告别手动布局时代!
python·qt
格鸰爱童话4 小时前
向AI学习项目技能(六)
java·人工智能·spring boot·python·学习
悟空爬虫-彪哥4 小时前
VRChat开发环境配置,零基础教程
python