• Python知识汇总


     重要链接:

    matplotlib库:matplotlib — Matplotlib 3.5.1 documentation

    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) 

    如显示:

    获取每列类型df.dtypes

    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

    绘图函数:

    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'))

  • 相关阅读:
    模板的全局特化
    面试官:你能用异步模拟超时重传机制?
    java毕业设计软件基于ssh+mysql+jsp的电影|影院购票选座系统
    Java抽象类知识
    markdown文档:一个简单标记语言的使用及实际应用(超简单)
    linux操作系统期末考试题库
    获取HTTP响应内容
    Mathcad的数组使用
    你们还不知道这几个实用的思维导图app吗?
    鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
  • 原文地址:https://blog.csdn.net/yamgyutou/article/details/136462245