Pandas入门

1 Pandas介绍

  • 专门用于数据挖掘的开源python库
  • 以Numpy为基础,借力Numpy模块在计算方面性能优势
  • 基于matplotlib,能够简便的画图
  • 独特的数据结构

Pandas 是一种数据处理工具,它是以下面三组词汇组成

panel + data + analysis

panel:面板数据是计量经济学中常用,一般表示三维数据

2 为什么使用Pandas

  • 便捷的数据处理能力
  • 读取文件方便
  • 封装了Matplotlib、Numpy的画图和计算

3 DataFrame

图1

从图中可以看到DataFrame由三部分组成

  • column label即列标签
  • index label即行标签
  • data即数据

那么标记轴axis表示什么呢,axis有两种取值,分别是1和0,其中1表示横轴,方向从左到右;0表示纵轴,方向从上到下。

import numpy as np
#创建一个符合正态分布的10个股票5天的涨跌幅数据
stock_change =np.random.normal(0,1,(10,5))
stock_change
array([[ 0.55780125,  0.47366431,  0.58266456, -0.29946146, -0.03390217],
       [-0.24385523,  0.08817049,  1.38707642, -0.57688673, -0.34760394],
       [ 0.95549368,  0.9414475 , -1.25056314,  0.18178455, -0.29557978],
       [ 1.61507705,  1.99202826,  2.80758189,  0.03192688, -0.57838353],
       [ 1.4956878 , -1.23262134,  2.50024192, -0.58850329,  0.7102027 ],
       [-0.662319  ,  1.76285879,  1.51286286, -0.53192944, -0.47949495],
       [ 0.73735599,  0.48964047, -1.32854508, -0.07826431,  0.36766669],
       [ 0.79199457, -1.74662017, -0.334844  , -1.47935611, -0.12609656],
       [-1.77942406, -1.67284383, -0.90279781,  0.06015451,  0.66952752],
       [-1.93908274, -1.93232172,  0.8559445 ,  1.13113002,  1.33307564]])
import pandas as pd
pd.DataFrame(stock_change)
01234
00.5578010.4736640.582665-0.299461-0.033902
1-0.2438550.0881701.387076-0.576887-0.347604
20.9554940.941448-1.2505630.181785-0.295580
31.6150771.9920282.8075820.031927-0.578384
41.495688-1.2326212.500242-0.5885030.710203
5-0.6623191.7628591.512863-0.531929-0.479495
60.7373560.489640-1.328545-0.0782640.367667
70.791995-1.746620-0.334844-1.479356-0.126097
8-1.779424-1.672844-0.9027980.0601550.669528
9-1.939083-1.9323220.8559441.1311301.333076

给股票数据增加行列索引

pd.DataFrame(stock_change,行索引,列索引)

#  添加行索引 列表解析
stock = ["股票{}".format(i) for i in range(10)]
pd.DataFrame(stock_change,stock)
01234
股票00.5578010.4736640.582665-0.299461-0.033902
股票1-0.2438550.0881701.387076-0.576887-0.347604
股票20.9554940.941448-1.2505630.181785-0.295580
股票31.6150771.9920282.8075820.031927-0.578384
股票41.495688-1.2326212.500242-0.5885030.710203
股票5-0.6623191.7628591.512863-0.531929-0.479495
股票60.7373560.489640-1.328545-0.0782640.367667
股票70.791995-1.746620-0.334844-1.479356-0.126097
股票8-1.779424-1.672844-0.9027980.0601550.669528
股票9-1.939083-1.9323220.8559441.1311301.333076
#添加列索引(先行后列)
date = pd.date_range(start ="20180101",periods=5,freq="B")
data =pd.DataFrame(stock_change,stock,date)

结构:既有行索引,又有列索引的二维数组

2018-01-01 00:00:002018-01-02 00:00:002018-01-03 00:00:002018-01-04 00:00:002018-01-05 00:00:00
股票00.5578010.4736640.582665-0.299461-0.033902
股票1-0.2438550.0881701.387076-0.576887-0.347604
股票20.9554940.941448-1.2505630.181785-0.295580
股票31.6150771.9920282.8075820.031927-0.578384
股票41.495688-1.2326212.500242-0.5885030.710203
股票5-0.6623191.7628591.512863-0.531929-0.479495
股票60.7373560.489640-1.328545-0.0782640.367667
股票70.791995-1.746620-0.334844-1.479356-0.126097
股票8-1.779424-1.672844-0.9027980.0601550.669528
股票9-1.939083-1.9323220.8559441.1311301.333076

3.1 属性

  • shape 形状
  • index 行索引
  • columns 列索引
  • values NDARRAY数据
  • T 转置
data.shape
(10, 5)
data.index
Index(['股票0', '股票1', '股票2', '股票3', '股票4', '股票5', '股票6', '股票7', '股票8', '股票9'], dtype='object')
data.values
array([[ 0.55780125,  0.47366431,  0.58266456, -0.29946146, -0.03390217],
       [-0.24385523,  0.08817049,  1.38707642, -0.57688673, -0.34760394],
       [ 0.95549368,  0.9414475 , -1.25056314,  0.18178455, -0.29557978],
       [ 1.61507705,  1.99202826,  2.80758189,  0.03192688, -0.57838353],
       [ 1.4956878 , -1.23262134,  2.50024192, -0.58850329,  0.7102027 ],
       [-0.662319  ,  1.76285879,  1.51286286, -0.53192944, -0.47949495],
       [ 0.73735599,  0.48964047, -1.32854508, -0.07826431,  0.36766669],
       [ 0.79199457, -1.74662017, -0.334844  , -1.47935611, -0.12609656],
       [-1.77942406, -1.67284383, -0.90279781,  0.06015451,  0.66952752],
       [-1.93908274, -1.93232172,  0.8559445 ,  1.13113002,  1.33307564]])
data.T
股票0股票1股票2股票3股票4股票5股票6股票7股票8股票9
2018-01-010.557801-0.2438550.9554941.6150771.495688-0.6623190.7373560.791995-1.779424-1.939083
2018-01-020.4736640.0881700.9414481.992028-1.2326211.7628590.489640-1.746620-1.672844-1.932322
2018-01-030.5826651.387076-1.2505632.8075822.5002421.512863-1.328545-0.334844-0.9027980.855944
2018-01-04-0.299461-0.5768870.1817850.031927-0.588503-0.531929-0.078264-1.4793560.0601551.131130
2018-01-05-0.033902-0.347604-0.295580-0.5783840.710203-0.4794950.367667-0.1260970.6695281.333076

3.2 方法

  • head() 数据量过大时,取前五行数据查看
  • tail()数据量过大时,取最后五行数据
data.head()
2018-01-01 00:00:002018-01-02 00:00:002018-01-03 00:00:002018-01-04 00:00:002018-01-05 00:00:00
股票00.5578010.4736640.582665-0.299461-0.033902
股票1-0.2438550.0881701.387076-0.576887-0.347604
股票20.9554940.941448-1.2505630.181785-0.295580
股票31.6150771.9920282.8075820.031927-0.578384
股票41.495688-1.2326212.500242-0.5885030.710203
data.tail()
2018-01-01 00:00:002018-01-02 00:00:002018-01-03 00:00:002018-01-04 00:00:002018-01-05 00:00:00
股票5-0.6623191.7628591.512863-0.531929-0.479495
股票60.7373560.489640-1.328545-0.0782640.367667
股票70.791995-1.746620-0.334844-1.479356-0.126097
股票8-1.779424-1.672844-0.9027980.0601550.669528
股票9-1.939083-1.9323220.8559441.1311301.333076

4 DataFrame索引的设置

4.1 修改行列索引值

data.index
Index(['股票0', '股票1', '股票2', '股票3', '股票4', '股票5', '股票6', '股票7', '股票8', '股票9'], dtype='object')
data.index[2] = "22"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-58-113c5bb5851a> in <module>
----> 1 data.index[2] = "22"

D:\ANACONDA\lib\site-packages\pandas\core\indexes\base.py in __setitem__(self, key, value)
   3936 
   3937     def __setitem__(self, key, value):
-> 3938         raise TypeError("Index does not support mutable operations")
   3939 
   3940     def __getitem__(self, key):

TypeError: Index does not support mutable operations

由结果可以看出,报错了,这是因为不能直接使用数字索引修改个别索引字段,在pandas中必须全部重新设定索引

# 索引只能全部重新设定
new_index = ["股票_{}".format(n)for n in range(10,20)]
new_index
data.index = new_index
data
2018-01-01 00:00:002018-01-02 00:00:002018-01-03 00:00:002018-01-04 00:00:002018-01-05 00:00:00
股票_100.5578010.4736640.582665-0.299461-0.033902
股票_11-0.2438550.0881701.387076-0.576887-0.347604
股票_120.9554940.941448-1.2505630.181785-0.295580
股票_131.6150771.9920282.8075820.031927-0.578384
股票_141.495688-1.2326212.500242-0.5885030.710203
股票_15-0.6623191.7628591.512863-0.531929-0.479495
股票_160.7373560.489640-1.328545-0.0782640.367667
股票_170.791995-1.746620-0.334844-1.479356-0.126097
股票_18-1.779424-1.672844-0.9027980.0601550.669528
股票_19-1.939083-1.9323220.8559441.1311301.333076

4.2 设置新索引

#设新索引
df = pd.DataFrame({'month': [1, 4, 7, 10],
                    'year': [2012, 2014, 2013, 2014],
                    'sale':[55, 40, 84, 31]})
monthyearsale
01201255
14201440
27201384
310201431
# 将列索引设为行索引,并且抛弃原来的列
df.set_index("month",drop=True)
yearsale
month
1201255
4201440
7201384
10201431

5 Series

Series是一维对象,包含数组数据(任何numpy类型的数据)和与数组关联的索引,与list结构差不多,但是我们可以自定义索引

s1 = pd.Series([100,24,"asd",np.nan])
s1
0    100
1     24
2    asd
3    NaN
dtype: object
#添加索引需要index传递一个包含index的数组name表示这个索引的统称
s2 = pd.Series([20,30,50],index = ['2015','2016','23321'],name = 'product')
s2
2015     20
2016     30
23321    50
Name: product, dtype: int64

我们也可以将DataFrame理解为Series的容器,或者说DataFrame相当于用胶水把一堆series给粘了起来

  • pd.date_range函数:

    这个函数用于生成一个固定频率的时间索引,在调用构造方法时,必须指定start、end、periods中的任两个参数值,否则会报错

    下面用pd.date_range函数生成以周为频率的时间索引

time = pd.date_range('20190606',periods=6,freq='W')
time
DatetimeIndex(['2019-06-09', '2019-06-16', '2019-06-23', '2019-06-30',
               '2019-07-07', '2019-07-14'],
              dtype='datetime64[ns]', freq='W-SUN')

给freq参数传递值 W 表示频率为周,freq也可以取M,H,S,分别表示频率为月,小时,秒

6 使用索引和切片

6.1 对Series

对Series的处理比较简单

s2 = pd.Series([30,35,40],["2015",'2016','2017'],name = "product")
s2
2015    30
2016    35
2017    40
Name: product, dtype: int64
s2[0:2]
2015    30
2016    35
Name: product, dtype: int64
s2['2015':'2017']
#用字段索引能取到最后一位
2015    30
2016    35
2017    40
Name: product, dtype: int64

也可以实用布尔索引

s2[s2>10]
2015    30
2016    35
2017    40
Name: product, dtype: int64

6.2 切片

#只能对行标签切片
data['股票_10':"股票_16"]
2018-01-01 00:00:002018-01-02 00:00:002018-01-03 00:00:002018-01-04 00:00:002018-01-05 00:00:00
股票_100.5578010.4736640.582665-0.299461-0.033902
股票_11-0.2438550.0881701.387076-0.576887-0.347604
股票_120.9554940.941448-1.2505630.181785-0.295580
股票_131.6150771.9920282.8075820.031927-0.578384
股票_141.495688-1.2326212.500242-0.5885030.710203
股票_15-0.6623191.7628591.512863-0.531929-0.479495
股票_160.7373560.489640-1.328545-0.0782640.367667
#对位置切片也是对行切片等价
data[0:3]
2018-01-01 00:00:002018-01-02 00:00:002018-01-03 00:00:002018-01-04 00:00:002018-01-05 00:00:00
股票_100.5578010.4736640.582665-0.299461-0.033902
股票_11-0.2438550.0881701.387076-0.576887-0.347604
股票_120.9554940.941448-1.2505630.181785-0.295580
# len返回多少行
data[0:len(data)-1]
2018-01-01 00:00:002018-01-02 00:00:002018-01-03 00:00:002018-01-04 00:00:002018-01-05 00:00:00
股票_100.5578010.4736640.582665-0.299461-0.033902
股票_11-0.2438550.0881701.387076-0.576887-0.347604
股票_120.9554940.941448-1.2505630.181785-0.295580
股票_131.6150771.9920282.8075820.031927-0.578384
股票_141.495688-1.2326212.500242-0.5885030.710203
股票_15-0.6623191.7628591.512863-0.531929-0.479495
股票_160.7373560.489640-1.328545-0.0782640.367667
股票_170.791995-1.746620-0.334844-1.479356-0.126097
股票_18-1.779424-1.672844-0.9027980.0601550.669528

6.3 按照字段和数字索引

上面的方法是有很大的局限,使用起来并不方便,那么pandas库有没有更加简便的方法对DataFrame和Series进行选择和索引呢?

下面介绍两种方法:

  • .loc 字段索引

  • .iloc 数字索引

  • ix 数字 字段混合索引ix方法,不过此方法已经过期,在未来会被移除,如果使用的话会出现warning

还是实用前面的df进行操作

monthyearsale
01201255
14201440
27201384
310201431
df.loc[0,'year']
2012
df.loc[1,'sale']
40
df.loc[0:2]
monthyearsale
01201255
14201440
27201384
#列索引
df.loc[:,'month':'year']
monthyear
012012
142014
272013
3102014
stock_data = pd.read_csv("./stock_day.csv")
stock_data

总结:

直接索引必须先列后行进行索引
new_data['open']['2018-02-26']

用loc索引既可先行后列,但必须按照名字索引

new_data.loc['2018-02-26','open']

一定要数字索引 使用iloc

new_data.iloc[1,0]

7 赋值操作

将open列数据全部赋值改变

new_data.open =100

new_data.iloc[1,0]=233

openhighcloselowvolumeprice_changep_changeturnover
2018-02-2710025.8824.1623.5395578.030.632.682.39
2018-02-2623323.7823.5322.8060985.110.693.021.53
2018-02-2310023.3722.8222.7152914.010.542.421.32

8 排序

排序有对内容排序和对索引排序

8.1 对内容排序

使用df.sort_values(key=,ascending=)对内容进行排序

  • 单个键或者多个键进行排序,默认升序

  • ascending=False:降序

  • ascending=True:升序

new_data.sort_values("high",ascending=False)

openhighcloselowvolumeprice_changep_changeturnover
2015-06-1010036.3533.8532.23269033.120.511.539.21
2015-06-1210035.9835.2134.01159825.880.822.385.47
2017-10-3110035.2234.4432.20361660.882.387.429.05
2015-06-1510034.9931.6931.69199369.53-3.52-10.006.82
2015-06-1110034.9834.3932.51173075.730.541.595.92
2017-10-3010034.4032.0631.85337772.31-1.05-3.178.45
2017-11-0110034.3433.8333.10232325.30-0.61-1.775.81
2015-06-1610033.4832.3529.61153130.610.662.085.24
2015-06-0910033.3433.3430.46204438.473.0310.007.00
2017-10-2710033.2033.1131.45333824.310.702.168.35
2015-06-1810032.8931.2030.3886382.05-0.12-0.382.96
2017-10-2610032.7032.4128.92501915.412.689.0112.56
2015-06-1710032.2031.3329.8090811.36-1.03-3.183.11
2017-11-0210031.8030.4530.45312481.06-3.38-9.997.82
2017-10-2310031.1629.7928.90466494.471.465.1511.68
2015-05-2210030.9929.5428.53209382.621.324.687.17
2015-06-1910030.9828.0728.0776310.31-3.12-10.002.61
2015-06-0810030.9030.3128.40179868.052.127.526.16
2017-10-2510030.4529.7327.54328947.311.685.998.23
2015-05-2510030.3029.9228.10151819.520.381.295.20
2015-05-2610030.3029.6628.70198210.12-0.26-0.876.78
2017-11-1410029.8929.3427.68243773.231.103.906.10
2017-10-2010029.8328.3327.85411570.121.174.3110.30

当遇到有多个数据相同不好排序的时候,同时给两个条件这样当遇到相同时候看第二个索引比大小
new_data.sort_values(by=["high","p_change"],ascending=False)

openhighcloselowvolumeprice_changep_changeturnover
2015-06-1010036.3533.8532.23269033.120.511.539.21
2015-06-1210035.9835.2134.01159825.880.822.385.47
2017-10-3110035.2234.4432.20361660.882.387.429.05
2015-06-1510034.9931.6931.69199369.53-3.52-10.006.82
2015-06-1110034.9834.3932.51173075.730.541.595.92
2017-10-3010034.4032.0631.85337772.31-1.05-3.178.45
2017-11-0110034.3433.8333.10232325.30-0.61-1.775.81
2015-06-1610033.4832.3529.61153130.610.662.085.24
2015-06-0910033.3433.3430.46204438.473.0310.007.00
2017-10-2710033.2033.1131.45333824.310.702.168.35
2015-06-1810032.8931.2030.3886382.05-0.12-0.382.96
2017-10-2610032.7032.4128.92501915.412.689.0112.56
2015-06-1710032.2031.3329.8090811.36-1.03-3.183.11
2017-11-0210031.8030.4530.45312481.06-3.38-9.997.82
2017-10-2310031.1629.7928.90466494.471.465.1511.68
2015-05-2210030.9929.5428.53209382.621.324.687.17
2015-06-1910030.9828.0728.0776310.31-3.12-10.002.61
2015-06-0810030.9030.3128.40179868.052.127.526.16
2017-10-2510030.4529.7327.54328947.311.685.998.23
2015-05-2510030.3029.9228.10151819.520.381.295.20
2015-05-2610030.3029.6628.70198210.12-0.26-0.876.78
2017-11-1410029.8929.3427.68243773.231.103.906.10
2017-10-2010029.8328.3327.85411570.121.174.3110.30

8.2 对索引改变为从小到大

new_data.sort_index().head()

openhighcloselowvolumeprice_changep_changeturnover
2015-03-0210012.6712.5212.2096291.730.322.623.30
2015-03-0310013.0612.7012.52139071.610.181.444.76
2015-03-0410012.9212.9012.6167075.440.201.572.30
2015-03-0510013.4513.1612.8793180.390.262.023.19
2015-03-0610014.4814.2813.13179831.721.128.516.16

8.3 对Series排序

取其中一列

s2 =new_data["price_change"]
s2

简单一点,因为直接就只有一values
s2.sort_values(ascending=False)

s2.sort_index()

9 DataFrame运算与统计

9.1 使用describe完成综合统计

new_data.describe()
openhighcloselowvolumeprice_changep_changeturnover
count643.000000643.000000643.000000643.000000643.000000643.000000643.000000643.000000
mean100.20684321.90051321.33626720.77183599905.5191140.0188020.1902802.936190
std5.2450084.0775783.9428063.79196873879.1193540.8984764.0796982.079375
min100.00000012.67000012.36000012.2000001158.120000-3.520000-10.0300000.040000
25%100.00000019.50000019.04500018.52500048533.210000-0.390000-1.8500001.360000
50%100.00000021.97000021.45000020.98000083175.9300000.0500000.2600002.500000
75%100.00000024.06500023.41500022.850000127580.0550000.4550002.3050003.915000
max233.00000036.35000035.21000034.010000501915.4100003.03000010.03000012.560000

9.2 使用idxmin、idxmax完成最大值最小值的索引

返回最大值和最小值位置

new_data.idxmax()
open            2018-02-26
high            2015-06-10
close           2015-06-12
low             2015-06-12
volume          2017-10-26
price_change    2015-06-09
p_change        2015-08-28
turnover        2017-10-26
dtype: object

9.3 使用cumsum等实现累计分析

#累计统计函数 计算前面几行累加结果
new_data["p_change"].sort_index().cumsum().plot()

图6

new_data.plot("p_change","turnover","scatter")

图3

图7

9.4 算术运算

new_data["open"]+10

2018-02-27    110
2018-02-26    243
2018-02-23    110
2018-02-22    110
2018-02-14    110
2018-02-13    110
2018-02-12    110
2018-02-09    110
2018-02-08    110
2018-02-07    110
2018-02-06    110

9.5 逻辑运算函数 query() isin()

应用query实现数据的筛选

应用isin实现数据的筛选

  • query() 查找满足条件的元素
  • isin() 判断某元素是否在数列中
#直接输入条件字符串
new_data.query("high>24")
openhighcloselowvolumeprice_changep_changeturnover
2018-02-2710025.8824.1623.5395578.030.632.682.39
2018-01-3010024.0823.8323.7032420.430.050.210.81
2018-01-2910024.6323.7723.7265469.81-0.73-2.981.64
2018-01-2610024.7424.4924.2250601.830.110.451.27
2018-01-2510024.9924.3724.23104097.59-0.93-3.682.61

new_data["turnover"].isin([4.19])

2018-02-27    False
2018-02-26    False
2018-02-23    False
2018-02-22    False
2018-02-14    False
2018-02-13    False
2018-02-12    False
2018-02-09    False
2018-02-08    False
2018-02-07    False
2018-02-06    False

9.6 布尔索引

应用逻辑运算符号实现数据的逻辑筛选

布尔索引

new_data[new_data["open"]>100]

openhighcloselowvolumeprice_changep_changeturnover
2018-02-2623323.7823.5322.860985.110.693.021.53

9.7 min max

  1. 使用max完成最大值计算
#按列
new_data.max()
open               233.00
high                36.35
close               35.21
low                 34.01
volume          501915.41
price_change         3.03
p_change            10.03
turnover            12.56
dtype: float64

2-09 False
2018-02-08 False
2018-02-07 False
2018-02-06 False


### 9.6 布尔索引 

应用逻辑运算符号实现数据的逻辑筛选

布尔索引

`new_data[new_data["open"]>100]`

|            | open |  high | close |  low |   volume | price_change | p_change | turnover |
| ---------: | ---: | ----: | ----: | ---: | -------: | -----------: | -------: | -------: |
| 2018-02-26 |  233 | 23.78 | 23.53 | 22.8 | 60985.11 |         0.69 |     3.02 |     1.53 |

### 9.7 min max 

1. 使用max完成最大值计算 

#按列
new_data.max()

open 233.00
high 36.35
close 35.21
low 34.01
volume 501915.41
price_change 3.03
p_change 10.03
turnover 12.56
dtype: float64

  • 11
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas是一种基于NumPy的数据分析工具,它可以帮助我们对数据进行清洗、编辑和分析等工作。掌握Pandas的常规用法是构建机器学习模型的第一步。首先,我们需要安装Pandas。如果已经安装了Anaconda,可以直接使用Anaconda自带的包管理工具来安装Pandas。如果没有安装Anaconda,可以使用Python自带的包管理工具pip来安装Pandas,命令为pip install pandas。安装完成后,我们可以导入Pandas库并查询相应的版本信息。通常,我们还会导入NumPy库,因为Pandas和NumPy常常结合在一起使用。导入Pandas库的命令为import pandas as pd,导入NumPy库的命令为import numpy as np。要查询Pandas的版本信息,可以使用print(pd.__version__)命令。接下来,我们可以学习Pandas的数据类型,包括Series和DataFrame。Series是一种一维的数据结构,类似于数组或列表,而DataFrame是一种二维的数据结构,类似于表格。在学习Pandas的过程中,我们可以通过导入Excel数据、输出Excel数据、数据概览、数据查看、数据清洗、数据选择、数据排序、数据分组、数据透视、数据合并和数据可视化等操作来熟悉Pandas的用法。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [非常全面的Pandas入门教程](https://blog.csdn.net/weixin_44489066/article/details/89494395)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [pandas 快速入门教程](https://blog.csdn.net/down_12345/article/details/105345429)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值