您现在的位置是:首页 > 技术教程 正文

Python知识汇总

admin 阅读: 2024-03-26
后台-插件-广告管理-内容页头部广告(手机)

 重要链接:

matplotlib库:matplotlib — Matplotlib 3.5.1 documentation

seaborn库:seaborn.lineplot — seaborn 0.13.2 documentation (pydata.org) 

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

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

绘图颜色色板:matplotlib、seaborn颜色、调色板、调色盘。 - 知乎

常用函数:

基础操作合集:

获取所有列名

list(df)

df.columns.tolist()

list(df.columns)

获取数据类型

type(df) 

如显示:

padas获取每列类型df.dtypes
jupyter notebook中卸载某个三方包!pip uninstall package_name -y
查看版本package_name.__version__
numpy改变数据形状

pre=pre[:,np.newaxis]

如果数据(300,),运行后变为(300,1),再运行一次变成(300,1,1)

padas拼接到一起df = df1.append(df2.append(df3))
计算某列除数和余数div,mod=divmod(df['num'],n),其中n为被除数

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

  1. loc:通过行、列的名称或标签来索引
  2. iloc:通过行、列的索引位置来寻找数据
  3. 数据:
  4. AA BB CC DD EE
  5. row1 2 3 56 55 4
  6. row2 5 7 4 34 5
  7. row3 9 7 4 7 15
  8. row4 5 72 43 34 5
  9. data1 = data.loc['row2'] #row2一行的值
  10. data1 = data.loc['row2',:] #row2一行的值
  11. data2 = data.loc[ : ,'BB'] #BB一列的值
  12. data3 = data.loc['row1', 'BB'] #row1行BB列对应的值,3
  13. data4 = data.loc['row2':'row3','AA':'DD'] #第2行到第3行,第BB列到第DD列这个区域内的值
  14. data5 = data.loc[ data.BB > 6] #等价于 data5 = data[data.BB > 6] #BB列大于6的每一行数据
  15. data6 = data.loc[ data.BB >6, ["BB","CC","DD"]] #切片操作,选择BB CC DD三列区域内BB列大于6的值
  16. data1 = data.iloc[1] #第二行的值,
  17. data1 = data.iloc[1, :] #效果与上面相同
  18. data2 = data.iloc[:, 1] #读取第二列的值
  19. data3 = data.iloc[1, 1] # 读取第二行,第二列的值
  20. data4 = data.iloc[1:3, 2:4] #左闭右开切片操作,第2、3行,第3、4列值

Python、Numpy和Pandas数据类型:

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

datetime数据类型转换:

  1. #object转为datatime
  2. df = pd.DataFrame({'date': ['2011-04-24 01:30:00.000']})
  3. df['date'] = pd.to_datetime(df['date'])
  4. #打印结果
  5. 0 2011-04-24 01:30:00
  6. Name: date, dtype: datetime64[ns]
  7. #datatime转为非时间数据
  8. df['date'] = df['date'].astype('object')
  9. #打印结果
  10. 0 2011-04-24 01:30:00
  11. Name: date, dtype: object
  12. #如果字符串格式不正规,可以通过format转换
  13. 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)

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

pandas.Dataframe.set_index( )函数设置索引:

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

pandas.Dataframe.reset_index()函数重置索引:

  1. 将索引列变为普通数据列
  2. drop: 重新设置索引后是否将原索引作为新的一列并入DataFrame,默认为False
  3. inplace: 是否在原DataFrame上改动,默认为False
  4. level: 如果索引(index)有多个列,仅从索引中删除level指定的列,默认删除所有列
  5. col_level: 如果列名(columns)有多个级别,决定被删除的索引将插入哪个级别,默认插入第一级
  6. col_fill: 如果列名(columns)有多个级别,决定其他级别如何命名
  7. import pandas as pd
  8. import numpy as np
  9. df = pd.DataFrame([('bird', 389.0), ('bird', 24.0), ('mammal', 80.5), ('mammal', np.nan)],
  10. index=['falcon', 'parrot', 'lion', 'monkey'], columns=('class', max_speed'))
  11. #图1
  12. print(df)
  13. #图2
  14. df1 = df.reset_index()
  15. print(df1)
  16. #图3
  17. df2 = df.reset_index(drop=True)
  18. print(df2)

pandas.Dataframe.rename()函数:

  1. 用来修改Dataframe数据的行名和列名。
  2. columns:列名
  3. index:行名
  4. axis:指定坐标轴
  5. inplace:是否替换,默认为False。inplace为False时返回修改后结果,变量自身不修改。inplace为True时返回None,变量自身被修改。
  6. >>> import pandas as pd
  7. >>> df
  8. A B
  9. 0 1 4
  10. 1 2 5
  11. 2 3 6
  12. # 方法一:不用axis修改。使用方法为df.rename(columns={"旧列名": "新列名"})
  13. >>> df.rename(columns={"A": "a", "B": "c"}) # 修改columns。inplace未设置,返回修改后的结果
  14. a c
  15. 0 1 4
  16. 1 2 5
  17. 2 3 6
  18. >>> df # inplace未设置,默认为false,则df自身不被改变
  19. A B
  20. 0 1 4
  21. 1 2 5
  22. 2 3 6
  23. >>> df_re=df.rename(columns={"A": "a", "B": "c"},index={0:"0a",1:"1a"}) # 同时修改行名和列名
  24. >>> df_re
  25. a c
  26. 0a 1 4
  27. 1a 2 5
  28. 2 3 6
  29. # 方法二:用axis修改,只修改行名列名之一时等价,无法同时修改
  30. >>> df.rename({1: 2, 2: 4}, axis='index') # 修改行名,1改成2,2改成4
  31. A B
  32. 0 1 4
  33. 2 2 5
  34. 4 3 6
  35. >>> df.rename(str.lower, axis='columns') # 列名大写变小写
  36. a b
  37. 0 1 4
  38. 1 2 5
  39. 2 3 6

绘图函数:

python matlplotlib/seaborn 绘制曲线的平均值标准差阴影图_带标准差阴影光谱曲线-CSDN博客

plt.annotate()函数:

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

曲线中异常点/特征点的标记方法。

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

  1. #参数
  2. #s 为注释文本内容
  3. #xy 为被注释的坐标点
  4. #xytext 为注释文字的坐标位置;
  5. #weight 设置字体线型;color 设置字体颜色;arrowprops 箭头参数,参数类型为字典dict;bbox给标题增加外框
  6. import matplotlib.pyplot as plt
  7. import numpy as np
  8. x = np.arange(0, 6)
  9. y = x * x
  10. #图1
  11. plt.plot(x, y, marker='o')
  12. for xy in zip(x, y):
  13. plt.annotate("(%s,%s)" %(x,y), xy=xy, xytext=(-20, 10), textcoords='offset points')
  14. plt.show()
  15. #图2
  16. ax.annotate('data = (%.1f, %.1f)'%(xdata, ydata),
  17. (xdata, ydata), xytext=(-2*offset, offset), textcoords='offset points',
  18. bbox=bbox, arrowprops=arrowprops)
  19. #图3,上述用于标注文字,但如果想把特殊的坐标用点标示出来可以结合散点图函数
  20. x1=list()
  21. y1=list()
  22. plt.plot(x, y, marker='o')
  23. for xy in zip(x, y):
  24. if x>3:
  25. plt.annotate("(%s,%s)" %(x,y), xy=xy, xytext=(-20, 10), textcoords='offset points')
  26. x1.append(x)
  27. y1.append(y)
  28. plt.scatter(x1,y1,marker="p',color='m'))

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索