Pandas进阶修炼120题-第三期(金融数据处理,51-80题)

目录

    • 往期内容:
      • 第一期:Pandas基础(1-20题)
      • 第二期:Pandas数据处理(21-50题)
    • 第三期 金融数据处理
      • 51.使用绝对路径读取本地Excel数据
        • 方法一:双反斜杠绝对路径
        • 方法二:r' '
        • 拓展:关于正斜杠(' / ')和反斜杠(' \ ')
      • 52.查看数据前三行
      • 53.查看每列数据缺失值情况
      • 54.提取日期列含有空值的行
      • 55.输出每列缺失值具体行数
        • 方法一:根据列名遍历,直接打印空缺值的行
        • 方法二:标准答案
      • 56.删除所有存在缺失值的行
      • 57.绘制收盘价的折线图
        • 方法一:直接使用.plot绘制
      • 58.同时绘制开盘价与收盘价
      • 59.绘制涨跌幅的直方图
      • 60.让直方图更细致
      • 61.以data的列名创建一个DataFrame
      • 62.打印所有换手率不是数字的行
      • 63.打印所有换手率为--的行
          • 方法一:逐一判断保存
          • 方法二:根据 isin() 判断是否具有包含关系
      • 64.重置data的行号
      • 65.删除所有换手率为非数字的行
      • 66.绘制换手率的密度曲线
      • 67.计算前一天与后一天收盘价的差值
          • 方法一:基于业务上的理解,直接使用收盘价-前一天的收盘价
          • 方法二:直接使用.diff() 计算
      • 68.计算前一天与后一天收盘价变化率
          • 方法一:根据业务知识计算变化率
          • 方法二:直接使用pct_change() 计算
      • 69.设置日期为索引
      • 70.以5个数据作为一个数据滑动窗口,在这个5个数据上取均值(收盘价)
      • 71.以5个数据作为一个数据滑动窗口,计算这五个数据总和(收盘价)
      • 72.将收盘价5日均线、20日均线与原始数据绘制在同一个图上
      • 73.按周为采样规则,取一周收盘价最大值
          • 方法一:使用滑动窗口以7天为采样
          • 方法二(正解):按周重采样
          • rolling() 和 ressample() 的区别与联系
      • 74.绘制重采样数据与原始数据
      • 75.将数据往后移动5天
      • 76.将数据向前移动5天
      • 77.使用expending函数计算开盘价的移动窗口均值
      • 78.绘制上一题的移动均值与原始数据折线图
      • 79.计算布林指标
      • 80.计算布林线并绘制

自己再写一遍的pandas习题,相比于标准答案添加了自己的理解与注释,也可直接下载链接上的习题
链接:https://pan.baidu.com/s/1arrqcBFZKqJngzRzUB2QfA?pwd=29eb
提取码:29eb
–来自百度网盘超级会员V3的分享

往期内容:

第三期 金融数据处理

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

51.使用绝对路径读取本地Excel数据

方法一:双反斜杠绝对路径

data = pd.read_excel('pandas120_51_80.xlsx')
data = pd.read_excel('C:\\Users\\XXX\\Desktop\\DataAnalyse\\组内出数任务\\data1\\pandas120\\pandas120_51_80.xlsx')

方法二:r’ ’

![请添加图片描述](https://img-blog.csdnimg.cn/4972169546374a668c2d253927c331b1.png)
data = pd.read_excel(r'C:\Users\XXX\Desktop\DataAnalyse\组内出数任务\data1\pandas120\pandas120_51_80.xlsx')

拓展:关于正斜杠(’ / ‘)和反斜杠(’ \ ')

关于正斜杠(’ / ‘)和反斜杠(’ \ '):

在文件路径中使用正斜杠(’ / ‘)还是反斜杠(’ \ ')取决于所使用的操作系统。这里有一个简短的概述:

  1. 正斜杠(’ / ‘):这是Unix和类Unix系统(如Linux和macOS)的标准。例如,Unix系统中的路径可能看起来像’ /home/user/documents/file.txt '。

  2. 反斜杠(’ \ '):这是Windows的标准。例如,Windows系统中的路径可能看起来像“C:\Users\Username\Documents\file.txt”。

然而,有几件事要记住:

  • 在许多编程语言中,反斜杠(’ \ ‘)是一个转义字符,这意味着它用于引入特殊字符序列。例如,’ \n ‘是换行符,’ \t ‘是制表符。因此,如果您在Python或Java等语言的路径中使用反斜杠,则需要转义它们(’ \ ')或使用原始字符串字面量(例如,在Python中,‘r ’ c:\path\to\file’ ')。

  • 现代版本的Windows在某种程度上是宽容的,并且会接受正斜杠,尽管这有时会导致意想不到的行为,如果一个程序不期望它。通常最好使用您的操作系统的标准格式。

  • 处理url或uri时,无论您的操作系统如何,始终使用正斜杠。这是网址的标准格式。

  • 如果你正在编写一个程序,需要在不同的操作系统之间移植,考虑使用一个函数或库,以一种平台独立的方式处理文件路径。例如,在Python中,你可以使用’ os.path.join() '来构造路径,它将使用当前操作系统的正确分隔符。

# 示例
import os

# This will use the correct separator for the current OS
path = os.path.join('home', 'user', 'documents', 'file.txt')
path
'home\\user\\documents\\file.txt'

52.查看数据前三行

data.head(3)
代码简称日期前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
0600000.SH浦发银行2016-01-0416.135616.144416.144415.499715.720542240610754425783-0.4151-2.572517.86020.22643.320318e+113.320318e+111.865347e+106.5614
1600000.SH浦发银行2016-01-0515.720515.464415.950115.367215.86185805479310341814740.14130.898917.81390.31123.350163e+113.350163e+111.865347e+106.6204
2600000.SH浦发银行2016-01-0615.861815.808816.020815.623415.9855467726538386673980.12360.779517.93070.25073.376278e+113.376278e+111.865347e+106.6720

53.查看每列数据缺失值情况

使用df.isnull().any()只能判断每列有无空值,如果想要输出空值的数量,需要使用df.isnull().sum()

sum():此方法在df.isnull()的结果上调用。由于True等于1,False等于0,因此求和操作将计算每列中True值(即null或NaN值)的数量。

因此,总而言之,df.isnull().sum()是一个方便的一行代码,它将返回DataFrame df的每列中缺失或NaN值的数量。

data.isnull().any()
代码           True
简称           True
日期           True
前收盘价(元)      True
开盘价(元)       True
最高价(元)       True
最低价(元)       True
收盘价(元)       True
成交量(股)       True
成交金额(元)      True
涨跌(元)        True
涨跌幅(%)       True
均价(元)        True
换手率(%)       True
A股流通市值(元)    True
总市值(元)       True
A股流通股本(股)    True
市盈率          True
dtype: bool
data.isnull().sum()
代码           1
简称           2
日期           2
前收盘价(元)      2
开盘价(元)       2
最高价(元)       2
最低价(元)       2
收盘价(元)       2
成交量(股)       2
成交金额(元)      2
涨跌(元)        2
涨跌幅(%)       2
均价(元)        2
换手率(%)       2
A股流通市值(元)    2
总市值(元)       2
A股流通股本(股)    2
市盈率          2
dtype: int64

54.提取日期列含有空值的行

data[data['日期'].isnull()]
代码简称日期前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
327NaNNaNNaTNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
328数据来源:Wind资讯NaNNaTNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN

55.输出每列缺失值具体行数

方法一:根据列名遍历,直接打印空缺值的行

for name in data.columns:
    print('{}列,空缺值的行为{}'.format(name,data[data[name].isnull()].index.tolist()))
代码列,空缺值的行为[327]
简称列,空缺值的行为[327, 328]
日期列,空缺值的行为[327, 328]
前收盘价(元)列,空缺值的行为[327, 328]
开盘价(元)列,空缺值的行为[327, 328]
最高价(元)列,空缺值的行为[327, 328]
最低价(元)列,空缺值的行为[327, 328]
收盘价(元)列,空缺值的行为[327, 328]
成交量(股)列,空缺值的行为[327, 328]
成交金额(元)列,空缺值的行为[327, 328]
涨跌(元)列,空缺值的行为[327, 328]
涨跌幅(%)列,空缺值的行为[327, 328]
均价(元)列,空缺值的行为[327, 328]
换手率(%)列,空缺值的行为[327, 328]
A股流通市值(元)列,空缺值的行为[327, 328]
总市值(元)列,空缺值的行为[327, 328]
A股流通股本(股)列,空缺值的行为[327, 328]
市盈率列,空缺值的行为[327, 328]

方法二:标准答案

相比自己写的方法在遍历时多了一步对于该列有无空缺值的判断,代码写的比较清晰

for name in data.columns:
    if data[name].isnull().any():
        location = data[data[name].isnull() == True].index.to_list()
    print('列名:"{}", 第{}行位置有缺失值'.format(name, location))
列名:"代码", 第[327]行位置有缺失值
列名:"简称", 第[327, 328]行位置有缺失值
列名:"日期", 第[327, 328]行位置有缺失值
列名:"前收盘价(元)", 第[327, 328]行位置有缺失值
列名:"开盘价(元)", 第[327, 328]行位置有缺失值
列名:"最高价(元)", 第[327, 328]行位置有缺失值
列名:"最低价(元)", 第[327, 328]行位置有缺失值
列名:"收盘价(元)", 第[327, 328]行位置有缺失值
列名:"成交量(股)", 第[327, 328]行位置有缺失值
列名:"成交金额(元)", 第[327, 328]行位置有缺失值
列名:"涨跌(元)", 第[327, 328]行位置有缺失值
列名:"涨跌幅(%)", 第[327, 328]行位置有缺失值
列名:"均价(元)", 第[327, 328]行位置有缺失值
列名:"换手率(%)", 第[327, 328]行位置有缺失值
列名:"A股流通市值(元)", 第[327, 328]行位置有缺失值
列名:"总市值(元)", 第[327, 328]行位置有缺失值
列名:"A股流通股本(股)", 第[327, 328]行位置有缺失值
列名:"市盈率", 第[327, 328]行位置有缺失值

56.删除所有存在缺失值的行

"""
备注
axis:0-行操作(默认),1-列操作
how:any-只要有空值就删除(默认),all-全部为空值才删除
inplace:False-返回新的数据集(默认),True-在原数据集上操作
"""
data.dropna(axis = 0,how = 'any',inplace = True)

57.绘制收盘价的折线图

方法一:直接使用.plot绘制

data['收盘价(元)'].plot(kind = 'line')

在这里插入图片描述

# 等价于
plt.plot(data['收盘价(元)'])

在这里插入图片描述

58.同时绘制开盘价与收盘价

data[['开盘价(元)','收盘价(元)']].plot()

在这里插入图片描述

59.绘制涨跌幅的直方图

data['涨跌幅(%)'].plot(kind = 'hist')

在这里插入图片描述

60.让直方图更细致

# import matplotlib.pyplot as plt # 如果之前运行过就不要再执行,可能会重置设置导致汉字不显示

n, bins, patches = plt.hist(data['涨跌幅(%)'],bins = 30,edgecolor = 'black')

'''
print(n) # [  1.   0.   0.   0.   0.   0.   0.   0.   1.   0.   4.   3.   4.  10. 18.  42. 109.  73.  31.  12.  10.   3.   1.   1.   1.   1.   0.   0.0.   2.]
print(bins) # [-8.0217     -7.54621667 -7.07073333 -6.59525    -6.11976667 -5.64428333
            #  -5.1688     -4.69331667 -4.21783333 -3.74235    -3.26686667 -2.79138333
            #  -2.3159     -1.84041667 -1.36493333 -0.88945    -0.41396667  0.06151667
            #   0.537       1.01248333  1.48796667  1.96345     2.43893333  2.91441667
            #   3.3899      3.86538333  4.34086667  4.81635     5.29183333  5.76731667
            #   6.2428    ]
print(patches) # <BarContainer object of 30 artists>
'''

# Add labels to each bin
for i in range(len(patches)):
    plt.text(
        patches[i].get_x()+patches[i].get_width()/2.,
        patches[i].get_height(),
        f'{n[i]:.0f}',
        ha = 'center'
    )
plt.title('Frequency Distribution of 涨跌幅 Levels')
plt.xlabel('涨跌幅')
plt.ylabel('Frequency')
plt.show()

在这里插入图片描述

61.以data的列名创建一个DataFrame

temp = pd.DataFrame(columns = data.columns)
temp
代码简称日期前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率

62.打印所有换手率不是数字的行

for i in range(len(data)):
    if type(data.loc[i,'换手率(%)'])!=float:
        temp = temp.append(data.loc[i])

temp
代码简称日期前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
26600000.SH浦发银行2016-02-16 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
27600000.SH浦发银行2016-02-17 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
28600000.SH浦发银行2016-02-18 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
29600000.SH浦发银行2016-02-19 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
30600000.SH浦发银行2016-02-22 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
31600000.SH浦发银行2016-02-23 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
32600000.SH浦发银行2016-02-24 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
33600000.SH浦发银行2016-02-25 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
34600000.SH浦发银行2016-02-26 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
35600000.SH浦发银行2016-02-29 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
36600000.SH浦发银行2016-03-01 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
37600000.SH浦发银行2016-03-02 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
38600000.SH浦发银行2016-03-03 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
39600000.SH浦发银行2016-03-04 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
40600000.SH浦发银行2016-03-07 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
41600000.SH浦发银行2016-03-08 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
42600000.SH浦发银行2016-03-09 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
43600000.SH浦发银行2016-03-10 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
data.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 327 entries, 0 to 326
Data columns (total 18 columns):
 #   Column     Non-Null Count  Dtype         
---  ------     --------------  -----         
 0   代码         327 non-null    object        
 1   简称         327 non-null    object        
 2   日期         327 non-null    datetime64[ns]
 3   前收盘价(元)    327 non-null    float64       
 4   开盘价(元)     327 non-null    float64       
 5   最高价(元)     327 non-null    float64       
 6   最低价(元)     327 non-null    float64       
 7   收盘价(元)     327 non-null    float64       
 8   成交量(股)     327 non-null    object        
 9   成交金额(元)    327 non-null    object        
 10  涨跌(元)      327 non-null    float64       
 11  涨跌幅(%)     327 non-null    float64       
 12  均价(元)      327 non-null    object        
 13  换手率(%)     327 non-null    object        
 14  A股流通市值(元)  327 non-null    float64       
 15  总市值(元)     327 non-null    float64       
 16  A股流通股本(股)  327 non-null    float64       
 17  市盈率        327 non-null    float64       
dtypes: datetime64[ns](1), float64(11), object(6)
memory usage: 56.6+ KB

63.打印所有换手率为–的行

方法一:逐一判断保存
for i in range(len(data)):
    if data.loc[i,'换手率(%)']=="--":
        temp = temp.append(data.loc[i])

temp
代码简称日期前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
26600000.SH浦发银行2016-02-16 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
27600000.SH浦发银行2016-02-17 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
28600000.SH浦发银行2016-02-18 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
29600000.SH浦发银行2016-02-19 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
30600000.SH浦发银行2016-02-22 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
31600000.SH浦发银行2016-02-23 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
32600000.SH浦发银行2016-02-24 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
33600000.SH浦发银行2016-02-25 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
34600000.SH浦发银行2016-02-26 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
35600000.SH浦发银行2016-02-29 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
36600000.SH浦发银行2016-03-01 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
37600000.SH浦发银行2016-03-02 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
38600000.SH浦发银行2016-03-03 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
39600000.SH浦发银行2016-03-04 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
40600000.SH浦发银行2016-03-07 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
41600000.SH浦发银行2016-03-08 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
42600000.SH浦发银行2016-03-09 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
43600000.SH浦发银行2016-03-10 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
26600000.SH浦发银行2016-02-16 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
27600000.SH浦发银行2016-02-17 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
28600000.SH浦发银行2016-02-18 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
29600000.SH浦发银行2016-02-19 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
30600000.SH浦发银行2016-02-22 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
31600000.SH浦发银行2016-02-23 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
32600000.SH浦发银行2016-02-24 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
33600000.SH浦发银行2016-02-25 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
34600000.SH浦发银行2016-02-26 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
35600000.SH浦发银行2016-02-29 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
36600000.SH浦发银行2016-03-01 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
37600000.SH浦发银行2016-03-02 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
38600000.SH浦发银行2016-03-03 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
39600000.SH浦发银行2016-03-04 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
40600000.SH浦发银行2016-03-07 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
41600000.SH浦发银行2016-03-08 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
42600000.SH浦发银行2016-03-09 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
43600000.SH浦发银行2016-03-10 00:00:0016.294616.294616.294616.294616.2946----0.00.0----344156547606.75344156547606.7518653471415.06.801
方法二:根据 isin() 判断是否具有包含关系
data[data['换手率(%)'].isin(["--"])] # 注意传入的值是列表类型的数据
代码简称日期前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
26600000.SH浦发银行2016-02-1616.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
27600000.SH浦发银行2016-02-1716.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
28600000.SH浦发银行2016-02-1816.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
29600000.SH浦发银行2016-02-1916.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
30600000.SH浦发银行2016-02-2216.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
31600000.SH浦发银行2016-02-2316.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
32600000.SH浦发银行2016-02-2416.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
33600000.SH浦发银行2016-02-2516.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
34600000.SH浦发银行2016-02-2616.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
35600000.SH浦发银行2016-02-2916.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
36600000.SH浦发银行2016-03-0116.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
37600000.SH浦发银行2016-03-0216.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
38600000.SH浦发银行2016-03-0316.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
39600000.SH浦发银行2016-03-0416.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
40600000.SH浦发银行2016-03-0716.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
41600000.SH浦发银行2016-03-0816.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
42600000.SH浦发银行2016-03-0916.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801
43600000.SH浦发银行2016-03-1016.294616.294616.294616.294616.2946----0.00.0----3.441565e+113.441565e+111.865347e+106.801

64.重置data的行号

data.reset_index(drop = True)
data.head()
代码简称日期前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
0600000.SH浦发银行2016-01-0416.135616.144416.144415.499715.720542240610754425783-0.4151-2.572517.86020.22643.320318e+113.320318e+111.865347e+106.5614
1600000.SH浦发银行2016-01-0515.720515.464415.950115.367215.86185805479310341814740.14130.898917.81390.31123.350163e+113.350163e+111.865347e+106.6204
2600000.SH浦发银行2016-01-0615.861815.808816.020815.623415.9855467726538386673980.12360.779517.93070.25073.376278e+113.376278e+111.865347e+106.6720
3600000.SH浦发银行2016-01-0715.985515.720515.808815.367215.464411350479199502702-0.5211-3.259717.57660.06083.266223e+113.266223e+111.865347e+106.4545
4600000.SH浦发银行2016-01-0815.464415.667515.791214.934515.4467719182961262105060-0.0177-0.114217.54920.38553.262492e+113.262492e+111.865347e+106.4471
data.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 327 entries, 0 to 326
Data columns (total 18 columns):
 #   Column     Non-Null Count  Dtype         
---  ------     --------------  -----         
 0   代码         327 non-null    object        
 1   简称         327 non-null    object        
 2   日期         327 non-null    datetime64[ns]
 3   前收盘价(元)    327 non-null    float64       
 4   开盘价(元)     327 non-null    float64       
 5   最高价(元)     327 non-null    float64       
 6   最低价(元)     327 non-null    float64       
 7   收盘价(元)     327 non-null    float64       
 8   成交量(股)     327 non-null    object        
 9   成交金额(元)    327 non-null    object        
 10  涨跌(元)      327 non-null    float64       
 11  涨跌幅(%)     327 non-null    float64       
 12  均价(元)      327 non-null    object        
 13  换手率(%)     327 non-null    object        
 14  A股流通市值(元)  327 non-null    float64       
 15  总市值(元)     327 non-null    float64       
 16  A股流通股本(股)  327 non-null    float64       
 17  市盈率        327 non-null    float64       
dtypes: datetime64[ns](1), float64(11), object(6)
memory usage: 56.6+ KB

65.删除所有换手率为非数字的行

k = []
for i in range(len(data)):
    if type(data.loc[i,'换手率(%)']) != float:
       k.append(i)
data = data.drop(k)
data.head()
代码简称日期前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
0600000.SH浦发银行2016-01-0416.135616.144416.144415.499715.720542240610754425783-0.4151-2.572517.86020.22643.320318e+113.320318e+111.865347e+106.5614
1600000.SH浦发银行2016-01-0515.720515.464415.950115.367215.86185805479310341814740.14130.898917.81390.31123.350163e+113.350163e+111.865347e+106.6204
2600000.SH浦发银行2016-01-0615.861815.808816.020815.623415.9855467726538386673980.12360.779517.93070.25073.376278e+113.376278e+111.865347e+106.6720
3600000.SH浦发银行2016-01-0715.985515.720515.808815.367215.464411350479199502702-0.5211-3.259717.57660.06083.266223e+113.266223e+111.865347e+106.4545
4600000.SH浦发银行2016-01-0815.464415.667515.791214.934515.4467719182961262105060-0.0177-0.114217.54920.38553.262492e+113.262492e+111.865347e+106.4471

66.绘制换手率的密度曲线

data['换手率(%)'].plot(kind = 'kde')

在这里插入图片描述

67.计算前一天与后一天收盘价的差值

方法一:基于业务上的理解,直接使用收盘价-前一天的收盘价
data['收盘价(元)'] - data['前收盘价(元)']
0     -0.4151
1      0.1413
2      0.1237
3     -0.5211
4     -0.0177
        ...  
322   -0.0800
323   -0.1000
324   -0.0600
325   -0.0600
326   -0.1000
Length: 309, dtype: float64
方法二:直接使用.diff() 计算

diff() :计算Series中的元素与同一个Series中另一个元素的差值(默认为上一行中的元素)。

# 计算Series中的元素与Series中另一个元素的差值(默认为上一行中的元素)。

data['收盘价(元)'].diff()
0         NaN
1      0.1413
2      0.1237
3     -0.5211
4     -0.0177
        ...  
322   -0.0800
323   -0.1000
324   -0.0600
325   -0.0600
326   -0.1000
Name: 收盘价(元), Length: 309, dtype: float64

68.计算前一天与后一天收盘价变化率

方法一:根据业务知识计算变化率
(data['收盘价(元)'] - data['前收盘价(元)']) / data['前收盘价(元)']
0     -0.025726
1      0.008988
2      0.007799
3     -0.032598
4     -0.001145
         ...   
322   -0.005277
323   -0.006631
324   -0.004005
325   -0.004021
326   -0.006729
Length: 309, dtype: float64
方法二:直接使用pct_change() 计算

pct_change():这是对pandas Series对象的方法调用。

pct_change()方法计算当前元素与系列中前一个元素之间的变化百分比。默认情况下,它计算紧跟前一个元素的变化百分比(lag=1)。这通常用于时间序列分析,以创建从一个时期到下一个时期的一系列百分比变化。

data['收盘价(元)'].pct_change()
0           NaN
1      0.008988
2      0.007799
3     -0.032598
4     -0.001145
         ...   
322   -0.005277
323   -0.006631
324   -0.004005
325   -0.004021
326   -0.006729
Name: 收盘价(元), Length: 309, dtype: float64

69.设置日期为索引

data = data.set_index('日期')
data
代码简称前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
日期
2016-01-04600000.SH浦发银行16.135616.144416.144415.499715.720542240610754425783-0.4151-2.572517.86020.22643.320318e+113.320318e+111.865347e+106.5614
2016-01-05600000.SH浦发银行15.720515.464415.950115.367215.86185805479310341814740.14130.898917.81390.31123.350163e+113.350163e+111.865347e+106.6204
2016-01-06600000.SH浦发银行15.861815.808816.020815.623415.9855467726538386673980.12360.779517.93070.25073.376278e+113.376278e+111.865347e+106.6720
2016-01-07600000.SH浦发银行15.985515.720515.808815.367215.464411350479199502702-0.5211-3.259717.57660.06083.266223e+113.266223e+111.865347e+106.4545
2016-01-08600000.SH浦发银行15.464415.667515.791214.934515.4467719182961262105060-0.0177-0.114217.54920.38553.262492e+113.262492e+111.865347e+106.4471
......................................................
2017-05-03600000.SH浦发银行15.160015.160015.160015.050015.080014247943215130847-0.0800-0.527715.09910.06593.260037e+113.260037e+112.161828e+106.1395
2017-05-04600000.SH浦发银行15.080015.070015.070014.900014.980019477788291839737-0.1000-0.663114.98320.09013.238418e+113.238418e+112.161828e+106.0988
2017-05-05600000.SH浦发银行14.980014.950014.980014.520014.920040194577592160198-0.0600-0.400514.73230.18593.225447e+113.225447e+112.161828e+106.0744
2017-05-08600000.SH浦发银行14.920014.780014.900014.510014.860043568576638781010-0.0600-0.402114.66150.20153.212476e+113.212476e+112.161828e+106.0500
2017-05-09600000.SH浦发银行14.860014.690014.840014.660014.760019225492283864640-0.1000-0.672914.7650.08893.190858e+113.190858e+112.161828e+106.0093

309 rows × 17 columns

70.以5个数据作为一个数据滑动窗口,在这个5个数据上取均值(收盘价)

.rolling(window=5):这将创建数据的滚动视图,窗口大小为5。这意味着对于数据中的每个点,它考虑当前点和之前的四个点。

.mean():计算每个滚动窗口的平均值。

结果将是一个pandas series,其中每个点是当天和前四个交易日的平均收盘价。请注意,结果中的前四个点将是NaN(表示“Not a Number”),因为它们在滚动窗口中只有不到5个点。

data['收盘价(元)'].rolling(window = 5).mean()
日期
2016-01-04         NaN
2016-01-05         NaN
2016-01-06         NaN
2016-01-07         NaN
2016-01-08    15.69578
                ...   
2017-05-03    15.14200
2017-05-04    15.12800
2017-05-05    15.07000
2017-05-08    15.00000
2017-05-09    14.92000
Name: 收盘价(元), Length: 309, dtype: float64

71.以5个数据作为一个数据滑动窗口,计算这五个数据总和(收盘价)

data['收盘价(元)'].rolling(window = 5).sum()
日期
2016-01-04        NaN
2016-01-05        NaN
2016-01-06        NaN
2016-01-07        NaN
2016-01-08    78.4789
               ...   
2017-05-03    75.7100
2017-05-04    75.6400
2017-05-05    75.3500
2017-05-08    75.0000
2017-05-09    74.6000
Name: 收盘价(元), Length: 309, dtype: float64

72.将收盘价5日均线、20日均线与原始数据绘制在同一个图上

data['收盘价(元)'].rolling(window = 5).mean().plot()
data['收盘价(元)'].rolling(window = 5).mean().plot()
data['收盘价(元)'].plot()

在这里插入图片描述

73.按周为采样规则,取一周收盘价最大值

方法一:使用滑动窗口以7天为采样

这种方法从实际效果上看,确实可以取到每个滑动窗口的最大值,由于滑动窗口的步长为1,所以不具有业务意义

data['收盘价(元)'].rolling(window = 7).max()
日期
2016-01-04      NaN
2016-01-05      NaN
2016-01-06      NaN
2016-01-07      NaN
2016-01-08      NaN
              ...  
2017-05-03    15.21
2017-05-04    15.21
2017-05-05    15.21
2017-05-08    15.21
2017-05-09    15.21
Name: 收盘价(元), Length: 309, dtype: float64
方法二(正解):按周重采样

.resample(‘W’):按周重新采样数据。“W”代表“周”。此操作按周对数据进行分组。

.max():计算每周组的最大值。

结果,是一个pandas Series,其中每个点是相应周的最大收盘价。注意,您需要确保DataFrame的索引是DatetimeIndex,否则重新示例操作将无法工作。如果DataFrame的索引不是DatetimeIndex,则可以使用pd.to_datetime()函数对其进行转换。

week_max = data['收盘价(元)'].resample('W').max()
week_max
日期
2016-01-10    15.9855
2016-01-17    15.8265
2016-01-24    15.6940
2016-01-31    15.0405
2016-02-07    16.2328
               ...   
2017-04-16    15.9700
2017-04-23    15.5600
2017-04-30    15.2100
2017-05-07    15.1600
2017-05-14    14.8600
Freq: W-SUN, Name: 收盘价(元), Length: 71, dtype: float64

值得注意的是,与方法一滑动窗口采样不同,如果一个采样周内无数据,还是可能出现空值。

去除空值的方法是使用函数 dropna()

week_max[week_max.isnull()]
日期
2016-02-14   NaN
2016-02-28   NaN
2016-03-06   NaN
2016-10-09   NaN
Name: 收盘价(元), dtype: float64
data['收盘价(元)'].resample('W').max().dropna()
日期
2016-01-10    15.9855
2016-01-17    15.8265
2016-01-24    15.6940
2016-01-31    15.0405
2016-02-07    16.2328
               ...   
2017-04-16    15.9700
2017-04-23    15.5600
2017-04-30    15.2100
2017-05-07    15.1600
2017-05-14    14.8600
Name: 收盘价(元), Length: 67, dtype: float64
rolling() 和 ressample() 的区别与联系

pandas中的 rolling() 函数和 ressample() 函数的用途略有不同,尽管它们都可以用于在时间窗口内聚合数据。

  • ’ rolling() '用于在一定大小的滚动窗口上应用函数。例如,7天窗口的滚动平均值将计算数据中每7天周期的平均值。但是,这将包括跨周(如周三至周二)的7天周期。

  • ’ resample() '用于将时间序列的频率更改为定义的频率,然后在每个间隔上应用函数。例如,重新采样到“W”频率并取最大值将计算数据中每个星期的最大值。

您可以使用’ rolling() '来计算7天的最大值,如果您的数据从周一开始并且没有间隔,则可能类似于每周最大值。但是,如果数据中存在空白,或者不是从周一开始,则7天最大值将不对应于周最大值。

74.绘制重采样数据与原始数据

data['收盘价(元)'].plot()
data['收盘价(元)'].resample('7D').max().plot()

在这里插入图片描述

75.将数据往后移动5天

data.shift(5)
代码简称前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
日期
2016-01-04NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2016-01-05NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2016-01-06NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2016-01-07NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2016-01-08NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
......................................................
2017-05-03600000.SH浦发银行15.0015.0215.1014.9915.05129759191952968620.050.333315.05070.063.253551e+113.253551e+112.161828e+106.1273
2017-05-04600000.SH浦发银行15.0515.0615.1115.0015.05149398712250226680.000.000015.06190.06913.253551e+113.253551e+112.161828e+106.1273
2017-05-05600000.SH浦发银行15.0515.0515.2515.0315.21228876453457915260.161.063115.10820.10593.288140e+113.288140e+112.161828e+106.1925
2017-05-08600000.SH浦发银行15.2115.1515.2215.0815.21157185092384191610.000.000015.16810.07273.288140e+113.288140e+112.161828e+106.1925
2017-05-09600000.SH浦发银行15.2115.2115.2215.1315.1612607509191225527-0.05-0.328715.16760.05833.277331e+113.277331e+112.161828e+106.1721

309 rows × 17 columns

76.将数据向前移动5天

data.shift(-5)
代码简称前收盘价(元)开盘价(元)最高价(元)最低价(元)收盘价(元)成交量(股)成交金额(元)涨跌(元)涨跌幅(%)均价(元)换手率(%)A股流通市值(元)总市值(元)A股流通股本(股)市盈率
日期
2016-01-04600000.SH浦发银行15.446715.199415.411414.978615.0581901771351550155933-0.3886-2.515717.19010.48343.180417e+113.180417e+111.865347e+106.2849
2016-01-05600000.SH浦发银行15.058115.164115.473215.084615.4114553744549640615020.35332.346017.40990.29693.255031e+113.255031e+111.865347e+106.4324
2016-01-06600000.SH浦发银行15.411415.517415.808815.323115.358447869312843717365-0.0530-0.343817.62540.25663.243839e+113.243839e+111.865347e+106.4102
2016-01-07600000.SH浦发银行15.358415.014015.888314.916815.8265548388339661178480.46813.047717.61740.2943.342702e+113.342702e+111.865347e+106.6056
2016-01-08600000.SH浦发银行15.826515.720516.029615.473215.526246723139836146426-0.3003-1.897317.89580.25053.279280e+113.279280e+111.865347e+106.4803
......................................................
2017-05-03NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2017-05-04NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2017-05-05NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2017-05-08NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2017-05-09NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN

309 rows × 17 columns

77.使用expending函数计算开盘价的移动窗口均值

  • .expanding() :在你的数据上创建一个扩展窗口。展开窗口从数据的开头开始,并包含截至当前点的所有数据。

  • .mean():计算每个窗口的平均值。

结果是一个pandas Series,其中每个点是截至并包括当天的所有天的平均开盘价。这意味着第一个点将是第一天的开盘价,第二个点将是前两天的平均开盘价,第三个点将是前三天的平均开盘价,以此类推。

data['收盘价(元)'].expanding().mean()
日期
2016-01-04    15.720500
2016-01-05    15.791150
2016-01-06    15.855933
2016-01-07    15.758050
2016-01-08    15.695780
                ...    
2017-05-03    16.047382
2017-05-04    16.043894
2017-05-05    16.040233
2017-05-08    16.036401
2017-05-09    16.032271
Name: 收盘价(元), Length: 309, dtype: float64

78.绘制上一题的移动均值与原始数据折线图

data['收盘价(元)'].expanding().mean().plot()
data['收盘价(元)'].plot()

在这里插入图片描述

79.计算布林指标

Bollinger Band (BBands)是一种流行的金融技术分析工具,由John Bollinger在20世纪80年代提出。Bollinger带包括一个作为n周期简单移动平均线(SMA)的中间带,一个在中间带之上的K倍n周期标准差处的上带,以及一个在中间带之下的K倍n周期标准差处的下带。参数N和K通常分别为20和2。

布林指数(Bollinger Band Index,简称Brin Index)是一个衡量股票价格是高还是低的指标。计算公式如下:

$
Brin Index = \frac{Price - Lower Band}{Upper Band - Lower Band}
$

其中:

  • Price为当前价格,
  • Lower Band 是指较低的Bollinger波段,
  • Upper Band 是指较高的Bollinger波段。

布林指数的取值范围为0 ~ 1。当布林指数接近0时,表明该股票的价格接近其低位区间。当它接近1时,它表明股票正在其范围的高端交易。

请注意,您需要有历史价格数据来计算Bollinger波段的移动平均线和标准差。

下面是用熊猫计算布林指数的方法:

# 计算移动平均数和标准偏差
data['MA'] = data['收盘价(元)'].rolling(window = 20).mean()
data['SD'] = data['收盘价(元)'].rolling(window = 20).std()
# 计算上布林带和下布林带
data['UpperBB'] = data['MA'] + (data['SD'] * 2)
data['LowerBB'] = data['MA'] - (data['SD'] * 2)
# 计算布林指数
data['Brin'] = (data['收盘价(元)'] - data['LowerBB']) / (data['UpperBB'] - data['LowerBB'])

80.计算布林线并绘制

plt.figure(figsize = (12,6)) # 设置图形的大小
data['Brin'].plot(grid = True) # 实际创建了图形
plt.title('Brin Index') # 为图形添加了标题
plt.show() # 显示图形


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TypeScript算法题实战——剑指 Offer篇(5)

目录 一、平衡二叉树1.1、题目描述1.2、题解 二、数组中数字出现的次数2.1、题目描述2.2、题解 三、数组中数字出现的次数 II3.1、题目描述3.2、题解 四、和为s的两个数字4.1、题目描述4.2、题解 五、和为s的连续正数序列5.1、题目描述5.2、题解 六、翻转单词顺序6.1、题目描述…

大数据技术之Hive2

目录标题 3、Hive 数据类型3.1 基本数据类型&#xff1a;3.2 集合数据类型&#xff1a;3.3 类型转化 4、DDL数据定义4.1 创建数据库4.2 查询数据库4.3 创建表4.4 管理表4.5 外部表4.6 管理表与外部表的相互转换4.7 分区表4.7.1 分区表基本操作4.7.2 分区表注意事项 4.7 修改表4…

小程序picker 在苹果手机不兼容 bug,按month时在iPhone 显示不正确及自动定位时间问题

如下图&#xff1a;点击弹出时间列表&#xff1a;日历控件点击选择显示1年1月 解决: 加上起始时间字段 <picker mode"date" value"{{date}}" start"1970-09-01" end"2030-09-01"></picker> 问题二&#xff1a; 还是&a…

leetcode 面试题 01.03. URL化

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;面试题 01.03. URL化 思路&#xff1a; 计算出空格的个数&#xff0c;我们可以知道最后一个字符的位置 endPos&#xff0c;再从后 end 向前遍历若不是空格正常拷贝&#xff0c;是空格则替换成 %20&#xff0c;最终当空格…

Unity 性能优化二:内存问题

目录 策略导致的内存问题 GFX内存 纹理资源 压缩格式 Mipmap 网格资源 Read/Write 顶点数据 骨骼 静态合批 Shader资源 Reserved Memory RenderTexture 动画资源 音频资源 字体资源 粒子系统资源 Mono堆内存 策略导致的内存问题 1. Assetbundle 打包的时候…

antd中的Cascader级联选择框怎么清空重置React

项目场景&#xff1a; React项目&#xff0c;使用antd中的Cascader级联选择框 问题描述&#xff1a; 通过其他按钮无法重置选择框中的项 原因分析&#xff1a;&#xff08;对应解决办法一和二&#xff09; 1、级联选择框的数据默认是根据options绑定的数组中的value值来进行…

深入浅出指南:Netty开发【NIO核心组件】

目录 ​Netty开发【NIO核心组件】 1.NIO基础概念 2.NIO核心组件 2.1.Channel&&Buffer简介 2.2.Selector 服务器的多线程版本 服务器的线程池版本 服务器的selector版本 2.3.Buffer 0.ByteBuffer的正确使用流程 1.ByteBuffer类型简介 2.ByteBuffer核心属性说…

【解惑笔记】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)

【学习资料】 子豪兄的零基础树莓派教程https://github.com/TommyZihao/ZihaoTutorialOfRaspberryPi/blob/master/%E7%AC%AC2%E8%AE%B2%EF%BC%9A%E6%A0%91%E8%8E%93%E6%B4%BE%E6%96%B0%E6%89%8B%E6%97%A0%E7%97%9B%E5%BC%80%E6%9C%BA%E6%8C%87%E5%8D%97.md#%E7%83%A7%E5%BD%95…

Qt6 Qt Quick UI原型学习QML第七篇

文章目录 效果演示QML语法 ClickableImageV2.qmlQML语法 EasingCurves.qml时钟小球滚动QML 源码## 时钟小球滚动QML解释 语法解释参考动画片动画元素应用动画可点击图像V2上升的物体第一个对象第二个对象第三个对象缓和曲线分组动画并行动画连续动画嵌套动画 效果演示 QML语法 …

orm(连接MySQL,增删改,创建表,样例)

1.启动数据库 mysql -u root -p password:(输入密码)2.创建数据库 create database stu DEFAULT CHARSET utf8 COLLATE utf8_general_ci;3.更改Django中settings.py文件配置 Django连接数据库&#xff1a; DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: st…

一起学算法(插入排序篇)

概念&#xff1a; 插入排序&#xff08;inertion Sort&#xff09;一般也被称为直接插入排序&#xff0c;是一种简单的直观的排序算法 工作原理&#xff1a;将待排列元素划分为&#xff08;已排序&#xff09;和&#xff08;未排序&#xff09;两部分&#xff0c;每次从&…

QT 视图(view)模型(model)汇总

QStringListModel和QListView UI界面 widget头文件 #ifndef WIDGET_H #define WIDGET_H#include <QStringList> #include <QStringListModel> #include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : publi…

认识 springboot 并了解它的创建过程 - 1

前言 本篇介绍什么是SpringBoot, SpringBoot项目如何创建&#xff0c;认识创建SpringBoot项目的目录&#xff0c;了解SpringBoo特点如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1.什么是springboot?2.为什么…

COMSOL三维Voronoi图泰森多边形3D模型轴压模拟及建模教程

多晶体模型采用三维Voronoi算法生成&#xff0c;试件尺寸为150150300mm棱柱模型&#xff0c;对晶格指定五种不同材料&#xff0c;实现晶格间的差异性。 对试件进行力学模拟&#xff0c;下侧为固定边界&#xff0c;限制z方向的位移&#xff0c;上表面通过给定位移的方式实现轴…

应用开发者的疑问:大模型是银弹吗?

被当成银弹的大模型 ChatGPT 火了之后&#xff0c;大模型似乎被当成了真正的银弹&#xff0c;所有的体验问题都想通过大模型解决&#xff1a; 能不能和大模型对话订机票&#xff1f;自然语言生成 SQL&#xff0c;简化报表分析工作&#xff1f;大模型帮老年人操作软件&#xff…

rpc通信原理浅析

rpc通信原理浅析 rpc(remote procedure call)&#xff0c;即远程过程调用&#xff0c;广泛用于分布式或是异构环境下的通信&#xff0c;数据格式一般采取protobuf。 protobuf&#xff08;protocol buffer&#xff09;是google 的一种数据交换的格式&#xff0c;它独立于平台语…

第2章 逻辑分页、AutoFac注入、工作单元与仓储

1 CoreCms.Net.Model.ViewModels.Basics.IPageList<T> namespace CoreCms.Net.Model.ViewModels.Basics { ///<typeparam name"T">泛型类型实例(1个指定实体的类型实例)。</typeparam> /// <summary> /// 【逻辑分页列表--接口】 /// <…

qt添加图标

1.添加资源 选择QtWidgetsApp.qrc文件打开 添加图标文件路径 添加图标文件 2.按钮添加图标 图标路径为:/res/res/swicth.jpg &#xff08;1&#xff09;代码设置图标 ui.pushButton_OPen->setIcon(QIcon(":/res/res/swicth.jpg")); &#xff08;2&#xff09;属…

MySQL数据库——DQL操作——基本查询

文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改&#xff0c;而其中数据的查询是使用最多&#xff0c;也…

WormGPT – 网络犯罪分子用来犯罪的人工智能工具

WormGPT – 网络犯罪分子用来发起商业电子邮件泄露攻击的生成式人工智能工具 前言 什么是蠕虫GPT&#xff08;WormGPT&#xff09; WormGPT是基于EleutherAI于2021年创建的大型语言模型GPT-J的AI模型。它具有无限的字符支持、聊天记忆保留和代码格式化功能。 如果未部署适当…