【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对象。

致谢

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

相关推荐
DreamLife☼4 小时前
Agent与大语言模型的集成
windows·python·语言模型
BK贝壳10 小时前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了
数据结构·python·性能优化·numpy
2601_9669496511 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
在世修行15 小时前
智学文枢:页面切换与跨页数据预填
python·桌面应用·signal·1024程序员节·pyside·跨页跳转·状态预填
2601_9628857216 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI16 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
信誓旦旦的程序猿17 小时前
【Python量化实战宝典 #21】北向资金跟随手册:聪明钱择时信号(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
严谨的麻辣烫17 小时前
静态 ISP 代理请求超时怎么排查?Python 与 curl 实战
python·http·requests·1024程序员节·网络排障
KeepRobots19 小时前
11-01 温哥华不回拨:用 60 行 Python 查你的工单系统会不会差一小时(KeepRobots 工程笔记)
python
xiao77mwq19 小时前
你以为 OCR 慢?实测 81.3 s 里全是故障代价:如何把「定格态」消掉,让耗时从 6.5 s 到 13 倍差距显出原形
python