Python知识汇总

news2024/12/24 2:06:52

重要链接:

matplotlib库:matplotlib — Matplotlib 3.5.1 documentation

DataFrame库:DataFrame — pandas 2.2.1 documentation (pydata.org)

Python Matplotlib 实现散点图、曲线图、箱状图、柱状图示例:Python Matplotlib 实现散点图、曲线图、箱状图、柱状图示例(满足基本的画图需求)_matplotlib实现散点图-CSDN博客

常用函数:

基础操作合集:

获取所有列名

list(df)

df.columns.tolist()

list(df.columns)

Pandas读取某列某行数据——loc、iloc

loc:通过行、列的名称或标签来索引
iloc:通过行、列的索引位置来寻找数据

数据:
      AA  BB  CC  DD  EE
row1  2   3   56  55  4
row2  5   7   4   34  5
row3  9   7   4   7   15
row4  5  72   43  34  5

data1 = data.loc['row2']   #row2一行的值
data1 = data.loc['row2',:] #row2一行的值
data2 = data.loc[ : ,'BB'] #BB一列的值
data3 = data.loc['row1', 'BB'] #row1行BB列对应的值,3
data4 = data.loc['row2':'row3','AA':'DD']  #第2行到第3行,第BB列到第DD列这个区域内的值
data5 = data.loc[ data.BB > 6] #等价于 data5 = data[data.BB > 6] #BB列大于6的每一行数据
data6 = data.loc[ data.BB >6, ["BB","CC","DD"]] #切片操作,选择BB CC DD三列区域内BB列大于6的值

 
data1 = data.iloc[1]  #第二行的值,
data1 = data.iloc[1, :]  #效果与上面相同
data2 = data.iloc[:, 1] #读取第二列的值
data3 = data.iloc[1, 1] # 读取第二行,第二列的值
data4 = data.iloc[1:3, 2:4] #左闭右开切片操作,第2、3行,第3、4列值

Python、Numpy和Pandas数据类型:

Python中的str和Numpy中的string、unicode(字符编码),在Pandas中都表示为object,也就是字符串在Pandas中的类型为object。

datetime数据类型转换:

#object转为datatime
df = pd.DataFrame({'date': ['2011-04-24 01:30:00.000']})
df['date'] = pd.to_datetime(df['date'])
#打印结果
0   2011-04-24 01:30:00
Name: date, dtype: datetime64[ns]
#datatime转为非时间数据
df['date'] = df['date'].astype('object')
#打印结果
0   2011-04-24 01:30:00
Name: date, dtype: object

#如果字符串格式不正规,可以通过format转换
pd.to_datetime("20110424 01:30:00.000", format='%Y%m%d %H:%M:%S.%f')

时间补全、重采集resample()函数:

采样频率:python时序分析之重采集(resample) - 知乎

resampling采样相关算法、属性:Resampling — pandas 2.2.1 documentation (pydata.org)

按照一分钟的频率将时间补全,mean()将补齐的时间数据识别为NaN
#ffill()方法使用前面的值来填充缺失的值,interpolate()是使用插值法补全,bfill()是向后补全
df=df.resample('1T').mean().ffill()
#获得五分钟为间隔的数据,asfreq()也可以换成其他
df5=df.resample('5T').asfreq()
df5=df.loc[::5]

pandas.Dataframe.set_index( )函数:

索引设置
df.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
-keys:列标签或列标签/数组列表,需要设置为索引的列
-drop:默认为True,删除用作新索引的列
-append:是否将列附加到现有索引,默认为False。
-inplace:输入布尔值,表示当前操作是否对原数据生效,默认为False。
-verify_integrity:检查新索引的副本。否则,请将检查推迟到必要时进行。将其设置为false将提高该方法的性能,默认为false。

pandas.Dataframe.reset_index()函数:

将索引列变为普通数据列
drop: 重新设置索引后是否将原索引作为新的一列并入DataFrame,默认为False
inplace: 是否在原DataFrame上改动,默认为False
level: 如果索引(index)有多个列,仅从索引中删除level指定的列,默认删除所有列
col_level: 如果列名(columns)有多个级别,决定被删除的索引将插入哪个级别,默认插入第一级
col_fill: 如果列名(columns)有多个级别,决定其他级别如何命名

import pandas as pd
import numpy as np

df = pd.DataFrame([('bird', 389.0), ('bird', 24.0), ('mammal', 80.5), ('mammal', np.nan)],
                  index=['falcon', 'parrot', 'lion', 'monkey'], columns=('class', max_speed'))
#图1
print(df)
#图2
df1 = df.reset_index()
print(df1)
#图3
df2 = df.reset_index(drop=True)
print(df2)

pandas.Dataframe.rename()函数:

用来修改Dataframe数据的行名和列名。
columns:列名
index:行名
axis:指定坐标轴
inplace:是否替换,默认为False。inplace为False时返回修改后结果,变量自身不修改。inplace为True时返回None,变量自身被修改。

>>> import pandas as pd
>>> df  
   A  B
0  1  4
1  2  5
2  3  6

# 方法一:不用axis修改。使用方法为df.rename(columns={"旧列名": "新列名"}) 
>>> df.rename(columns={"A": "a", "B": "c"})  # 修改columns。inplace未设置,返回修改后的结果
   a  c
0  1  4
1  2  5
2  3  6
>>> df  # inplace未设置,默认为false,则df自身不被改变
   A  B
0  1  4
1  2  5
2  3  6
>>> df_re=df.rename(columns={"A": "a", "B": "c"},index={0:"0a",1:"1a"})  # 同时修改行名和列名
>>> df_re
    a  c
0a  1  4
1a  2  5
2   3  6

# 方法二:用axis修改,只修改行名列名之一时等价,无法同时修改
>>> df.rename({1: 2, 2: 4}, axis='index')  # 修改行名,1改成2,2改成4
   A  B
0  1  4
2  2  5
4  3  6
>>> df.rename(str.lower, axis='columns')  # 列名大写变小写
   a  b
0  1  4
1  2  5
2  3  6


绘图:

plt.annotate()函数:

用于在图中标注文字,需要用循环配合,一个点一个点的标记。

 参考:https://matplotlib.org/3.5.1/api/_as_gen/matplotlib.pyplot.annotate.html

#参数
#s 为注释文本内容
#xy 为被注释的坐标点
#xytext 为注释文字的坐标位置;
#weight 设置字体线型;color 设置字体颜色;arrowprops 箭头参数,参数类型为字典dict;bbox给标题增加外框 

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 6)
y = x * x

#图1
plt.plot(x, y, marker='o')
for xy in zip(x, y):
    plt.annotate("(%s,%s)" %(x,y), xy=xy, xytext=(-20, 10), textcoords='offset points')
plt.show()

#图2
ax.annotate('data = (%.1f, %.1f)'%(xdata, ydata),
            (xdata, ydata), xytext=(-2*offset, offset), textcoords='offset points',
            bbox=bbox, arrowprops=arrowprops)

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

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

相关文章

Python爬虫实战!爬取百度指数并可视化

大家好,我是小F~ 这两年AI可以说是非常火,尤其是AIGC领域。 而这其中很多都是基于Python实现的,比如ChatGPT、AI绘画、声音克隆等等。 对于普通人来说,想直接学习这些高难度的Python项目,还是比较困难的。 …

Elixir 依赖 (deps) 调试的小技巧

最近使用 Elixir 有点多, 经常需要观察一些依赖 (Deps) 的实现, 比如想加个日志打印点 IO.inspect 啥的观察下某个变量,才能更好的理解某个 Elixir 的依赖。这里介绍下一些调试的方式: 这里以 yeshan333/ex_integration_coveralls 为例子. 我们先 clone 项目到本地…

Matlab 机器人工具箱 符合动力学

文章目录 1 符合化表示1.1 标准DH动力学1.2 改进DH动力学 质量集中在质心1.2 改进DH动力学 质量集中在末端1.3 程序问题1.3.1 Unable to perform assignment because value of type sym is not convertible to double.1.3.2 CAT arguments dimensions not consistent.参考链接1…

测试用例设计指南

软件测试设计是测试过程中重要的测试活动,怎么样设计测试用例能提高我们测试的效率和质量,从以下几个方面做了简单的讲解。 1、测试用例设计原则 测试用例设计的基本原则包括:有效性、清晰性、可复用性、可维护性、完整性、兼容性、易操作性…

JS利用Worker多线程大文件切片上传

在做前端上传时,会遇到上传大文件,大文件就要进行分片上传,我们整理下思路,实现一个分片上传,最终我们要拿到每一个分片的hash值,index 分片索引,以及分片blob,如下: 一…

递归学习资料

思路 例题 package 递归;public class 反向打印字符串 {public static void main(String[] args) {f("ABC",0);}static void f(String str,int n){if (nstr.length()){return;}f(str,n1);System.out.println(str.charAt(n)"");} }多路递归 递归优化 -剪枝…

(vue)复合型输入框el-input输入数字类型,e,+,-等特殊符号可以输入

(vue)复合型输入框el-input输入数字类型&#xff0c;e&#xff0c;&#xff0c;-等特殊符号可以输入 效果 代码 <el-form-item label"分数区间"><el-inputplaceholder"请输入内容"v-model.number"formInline.scoreIntervalValue"clas…

Oracle 11g升级19c 后部分查询功能很慢

*Oracle 11g升级19c 后部分查询功能很慢 今天生产突然有个查询非常慢&#xff0c;日志显示执行了50秒左右&#xff0c;但是从日志中拿出SQL在PLSQL执行&#xff0c;发现用时不到1秒&#xff0c;查看SQL,怀疑是下面几种原因导致 1、使用函数不当 UNIT.UNIT_CODE LIKE CONCAT(‘…

2核4G云服务器租用价格_2核4G云主机优惠价格_2024年报价

租用2核4G服务器费用价格&#xff0c;2核4G云服务器多少钱一年&#xff1f;1个月费用多少&#xff1f;阿里云2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年&#xff1b;腾讯云轻量2核4G服务器5M带宽165元一年、252元15个月、540元三…

SEACells从单细胞基因组学数据推断转录和表观基因组细胞状态

摘要 Metacells是从单细胞测序数据中衍生出的细胞分组&#xff0c;代表了高度粒度化、独特的细胞状态。在这里&#xff0c;我们提出了单细胞细胞状态聚合&#xff08;SEACells&#xff09;&#xff0c;这是一种用于识别Metacells的算法&#xff0c;它克服了单细胞数据稀疏性的…

leetcode 2.27

leetcode hot 100 哈希1.字母异位词分组2.最长连续序列 双指针1.盛最多水的容器2.和为 K 的子数组 数组1.除自身以外数组的乘积 哈希 1.字母异位词分组 49. 字母异位词分组 方法一&#xff1a;排序 由于互为字母异位词的两个字符串包含的字母相同&#xff0c;因此对两个字符…

C++设计模式之——桥接模式详解和代码实例

文章目录 桥接模式详解&#xff1a;C代码实例进一步阐述桥接模式的优点和适用场景桥接模式的实际应用场景还包括但不限于以下几种情况&#xff1a; 桥接模式(Bridge Pattern)是一种结构型设计模式&#xff0c;它将抽象部分与其实现部分分离&#xff0c;使它们都可以独立变化。这…

Arduino与processing之间的通信——进阶版

本次需要实现Arduino获取板子的偏转角度并通过串口发送给processing&#xff0c;processing部分根据传输过来的各个轴的偏转角度建立对应偏转角度的3D模型。 这就涉及了两个轴正负方向的偏转&#xff0c;我的实现思路是使用串口传输 字母数字 格式的信息&#xff0c;字母用来判…

Corel 会声会影 2023 激活码 会声会影 2023 序列号生成器

会声会影 2023 已经出来很长时间了&#xff0c;但是对它的热爱一直持续不减&#xff0c;今天我给大家带来2023版本为用户带来的多个全新功能&#xff0c;可以更好的编辑视频&#xff0c;不过软件还是付费的&#xff0c;为此我带来了会声会影 2023序列号生成器&#xff0c;可以轻…

算法沉淀——动态规划之01背包问题(leetcode真题剖析)

算法沉淀——动态规划之01背包问题 01.【模板】01背包02.分割等和子集03.目标和04.最后一块石头的重量 II 01背包问题是一类经典的动态规划问题&#xff0c;通常描述为&#xff1a;有一个固定容量的背包&#xff0c;以及一组物品&#xff0c;每件物品都有重量和价值&#xff0c…

【蓝桥杯】分巧克力

一.题目描述 二.输入描述 三.输出描述 四.问题分析 //分巧克力 #include <iostream> #include <algorithm>using namespace std;const int N1e510; int n,k,h[N],w[N];bool judge(int mid){int cnt0;for(int i0;i<n;i){cnt(h[i]/mid)*(w[i]/mid);if(cnt>k)r…

【短时交通流量预测】基于Elman神经网络

课题名称&#xff1a;基于Elman神经网络的短时交通流量预测 版本时间&#xff1a;2023-04-27 代码获取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主获取 模型简介&#xff1a; 城市交通路网中交通路段上某时刻的交通流量与本路段前几个时段的交通流量有关&#…

数仓项目6.0(一)

尚硅谷大数据项目【电商数仓6.0】企业数据仓库项目_bilibili 数据流转过程 用户➡️业务服务器➡️数据库存储➡️数仓统计分析➡️数据可视化 数据仓库处理流程&#xff1a;数据源➡️加工数据➡️统计筛选数据➡️分析数据 数据库不是为了数据仓库服务的&#xff0c;需要…

【牛客】VL63 并串转换

题目 描述 题目描述&#xff1a; 设计一个模块进行并串转换&#xff0c;要求每四位d输为转到一位dout输出&#xff0c;输出valid_in表示此时的输入有效 信号示意图&#xff1a; clk为时钟 rst为低电平复位 valid_in 表示输入有效 d 信号输入 dout 信号输出 波形示意图&…

TypeError: the JSON object must be str, bytes or bytearray, not dict

参考文章&#xff1a;https://blog.csdn.net/yuan2019035055/article/details/124934362 Python基础系列&#xff08;一&#xff09;搞懂json数据解析与字典之间的关系 代码&#xff1a; 报错信息: TypeError: the JSON object must be str, bytes or bytearray, not dict …