10.使用Pandas进行数据与处理

2023-10-28

补充(10.1 NUMPY的基本使用方法)

NUMPY是Python语言的一个扩充程序库,支持高级的数组和矩阵运算。

10.1.1数组创建

import numpy as np

a=[1,2,3,4,5]#创建简单的列表

b=np.array(a)#将列表转换为数组

输入b

得到array([1.2.3.4.5])

b.size#数组的元素个数

5

b.shape#数组的形状

(5,)

b.nidm  #数组的维度

1

 

 

 

 

 

 

 10.1.2 数组索引和切片

 

 

 10.1.3数组运算

数组运算实际上就是对应位置的元素进行运算。常见的就是加减乘除,开方等计算。

 

 10.2  pandas数据结构

10.2.1 Series

Series的字符串表现形式为:索引在左边,值在右边。如果没有为数据指定索引,就会自动创建一个0到N-1(N为数据的长度)的整数型索引。

import numpy as np

import pandas as pd

from pandas import Series,DataFrame

obj=Series([3,5,6,10,9,2])

print(obj)

print(obj.index)

pandas会自动创建一个整型索引。现在,我们创建对数据点进行标记的索引.

from pandas import Series,DataFrame

obj=Series([3,5,6,10,9,2],index=['a','b','c','d','e','f'])

print(obj)

print(obj.index)

创建好Series以后,可以利用索引的方式选取Series的单个或一组值。作为演示

print(obj['a'])

print(obj[['b','d','f']])

可以对Series进行NumPy数组运算。

print(obj[obj>5])

print(obj * 2)

可以将Series看成是一个有定长的有序字典,因为它是索引值到数据值的一个映射。

print('b' in obj)

print('m' in obj)、

此外,也可以用字典创建Series。

dic={'m':4,'n':5,'p':6}

obj3=Series(dic)

print(obj3)

使用字典生成Series时,可以指定额外的索引。如果额外的索引与字典中的键不匹配,则不匹配的索引部分数据为NaN。

ind=['m','n','p','a']

obj4=Series(dic,index=ind)

print(obj4)

pandas提供了isnull()和notnull()函数用于检测缺失数据。

print(pd.isnull(obj4))

print(pd.notnull(obj4))

可以对不同的Series进行算术运算,在运算过程中,pandas会自动对齐不同索引的数据。

print( obj3+obj4)

Series对象本身及其索引都有一个name属性。

obj4.name='sereis_a'

obj4.index.name='letter'

print(obj4)

Series的索引可以通过赋值的方式进行改变。

obj4.index=['u','v','w','a']

10.2.2Dataframe

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看作由Series组成的字典(公用同一个索引)。跟其他类似的数据结构相比,DataFrame中面向行和面向列的操作基本是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或者别的一维数据结构)。

from pandas import Series,DataFrame

data = {'sno':['95001', '95002', '95003', '95004'],

   'name':['Xiaoming','Zhangsan','Lisi','Wangwu'],

   'sex':['M','F','F','M'],

   'age':[22,25,24,23]}

frame=DataFrame(data)

print(frame)

虽然没有指定行索引,但是,pandas会自动添加索引。

如果指定列索引,则会按照指定顺序排列。

在制定列索引时,如果存在不匹配的列,则不匹配的列的值为NaN

frame=DataFrame(data,columns=['sno','name','sex','age','grade'])

print(frame)

可以同时指定行索引和列索引:

frame=DataFrame(data,columns=['sno','name','sex','age','grade'],index=['a','b','c','d'])

通过类似字典标记或属性的方式,可以获取Series(列数据):

print(frame['sno'])

print(frame.name)

或者,也可以采用“切片”的方式一次获取多个行:

可以用“切片”的方式使用列名称获取1个列:

也可以用“切片”的方式使用列名称获取多个列:

print(frame.loc[:, 'sex':])

可以给列赋值,赋值是列表的时候,列表中元素的个数必须和数据的行数匹配:

frame['grade']=[93,109,72,104]

可以用一个Series修改一个DataFrame的值,将精确匹配DataFrame的索引,空位将补上缺失值:

frame['grade']=Series([67,109],index=['a','c'])

可以增加一个新的列:

frame['province']=['ZheJiang','FuJian','Beijing','ShangHai']

可以把嵌套字典(字典的字典)作为参数,传入DataFrame,其中,外层字典的键作为列(column),内层键作为行索引(index):

可以对结果进行转置

10.3基本功能

10.3.1 重新索引

import numpy as np

import pandas as pd

#pandas中的reindex方法可以为Series和DataFrame添加或者删除索引。如果新添加的索引没有对应的值,则默认为NaN。如果减少索引,就相当于一个切片操作。

from pandas import Series,DataFrame

s1 = Series([1, 2, 3, 4], index=['A', 'B', 'C', 'D'])

print(s1)

## 重新指定index, 多出来的index,可以使用fill_value填充

print(s1.reindex(index=['A', 'B', 'C', 'D', 'E'], fill_value = 10))

# 修改索引,将s2的索引增加到15个,如果新增加的索引值不存在,默认为NaN

s2 = Series(['A', 'B', 'C'], index = [1, 5, 10])

print(s2.reindex(index=range(15)))

# 修改索引,将s2的索引增加到15个,如果新增加的索引值不存在,默认为NaN

print( s2.reindex(index=range(15)))

# ffill: 表示forward fill,向前填充

# 如果新增加索引的值不存在,那么按照前一个非NaN的值填充进去

print(s2.reindex(index=range(15), method='ffill'))

# 减少index

print( s1.reindex(['A', 'B']))

df1 = DataFrame(np.random.rand(25).reshape([5, 5]), index=['A', 'B', 'D', 'E', 'F'], columns=['c1', 'c2', 'c3', 'c4', 'c5'])

print(df1)

# 为DataFrame添加一个新的索引

# 可以看到自动扩充为NaN

print(df1.reindex(index=['A', 'B', 'C', 'D', 'E', 'F']))

# 扩充列

print(df1.reindex(columns=['c1', 'c2', 'c3', 'c4', 'c5', 'c6']))

# 减少index

print(df1.reindex(index=['A', 'B']))

10.3.2 丢弃指定轴上的项——10.3.6 函数应用和映射

可以使用drop()方法丢弃指定轴上的项,drop()方法返回的是一个在指定轴上删除了指定值的新对象

import numpy as np

import pandas as pd

#pandas中的reindex方法可以为Series和DataFrame添加或者删除索引。如果新添加的索引没有对应的值,则默认为NaN。如果减少索引,就相当于一个切片操作。

from pandas import Series,DataFrame

s1 = Series(np.arange(4), index = ['a', 'b', 'c','d'])

print(s1.drop(['a', 'b']))

# DataFrame根据索引行/列删除行/列

df1 = DataFrame(np.arange(16).reshape((4, 4)),

         index = ['a', 'b', 'c', 'd'],

         columns = ['A', 'B', 'C', 'D'])

print(df1)

print(df1.drop(['A','B'],axis=1))   #在列的维度上删除AB两行,axis值为1表示列的维度

print(df1.drop('a', axis = 0) )  #在行的维度上删除行,axis值为0表示行的维度

print(df1.drop(['a', 'b'], axis = 0))

data = DataFrame(np.arange(16).reshape((4, 4)),

       index = ['a', 'b', 'c', 'd'],

       columns = ['A', 'B', 'C', 'D'])

print(data)

print(data['A'])  #打印列

print(data[['A', 'B']])   #花式索引

print(data[:2])   #切片索引,选择行

print(data[data.A > 5])  #根据条件选择行

print(data < 5)    #打印True或者False

data[data < 5] = 0  #条件索引

print(data)

#下面是关于DataFrame算术运算的实例

df1 = DataFrame(np.arange(12).reshape((3,4)),columns=list("abcd"))

df2 = DataFrame(np.arange(20).reshape((4,5)),columns=list("abcde"))

print(df1)

print(df2)

print(df1+df2)

print(df1.add(df2,fill_value=0) ) #为df1添加第3行和e这一列

print(df1.add(df2).fillna(0) ) #按照正常方式将df1和df2相加,然后将NaN值填充为0

#10.3.5 DataFrame和Series之间的运算

frame = DataFrame(np.arange(12).reshape((4,3)),columns=list("bde"),

                 index=["Beijing","Shanghai","Shenzhen","Xiamen"])

print(frame)

print(frame.iloc[1])  # 获取某一行数据

print(frame.index)  #获取索引

series = frame.iloc[0]

print(series)

print(frame - series)

#函数应用和映射

frame = DataFrame(np.arange(12).reshape((4,3)),columns=list("bde"),

                 index=["Beijing","Shanghai","Shenzhen","Xiamen"])

print(frame)

f = lambda x : x.max() - x.min()  # 匿名函数

print(frame.apply(f))  #apply默认第二个参数axis=0,作用于列方向上,axis=1时作用于行方向上

#可以使用applymap()将一个规则应用到DataFrame中的每一个元素

10.3.7排序和排名

import numpy as np

import pandas as pd

#pandas中的reindex方法可以为Series和DataFrame添加或者删除索引。如果新添加的索引没有对应的值,则默认为NaN。如果减少索引,就相当于一个切片操作。

from pandas import Series, DataFrame

series = Series(range(4),index=list("dabc"))

print(series)

print(series.sort_index()) #索引按字母顺序排序

frame= DataFrame(np.arange(8).reshape((2,4)),

        index=["three","one"],

        columns=list("dabc"))

print(frame)

print(frame.sort_index())

print(frame.sort_index(axis=1,ascending=False))

# 按照DataFrame中某一列的值进行排序

df = DataFrame({"a":[4,7,-3,2],"b":[0,1,0,1]})

print(df)

# 按照b这一列的数据值进行排序

print(df.sort_values(by="b"))

#排名(rank)是指根据值的大小/出现次数来进行排名,得到一组排名值。排名跟排序关系密切,且它会增设一个排名值(从1开始,一直到数组中有效数据的数量)。默认情况下,rank()通过将平均排名分配到每个组打破平级关系。也就是说,如果有两组数值一样,那他们的排名将会被加在一起再除以2。

obj=Series([7,-4,7,3,2,0,5])

print(obj.rank())

print(obj.rank(method='first'))

print(obj.rank(method='min'))

print(obj.rank(method='max'))

#也可以对DataFrame使用rank(),实例如下:

frame = DataFrame({'b': [3, 1, 5, 2], 'a': [10, 4, 3, 7], 'c': [2, 7, 9, 4]})

print(frame)

print(frame.rank(axis=1))  # axis=0时作用于列方向上,axis=1时作用于行方向上

10.3.10  分组

import numpy as 

import pandas as pd

from pandas import Series, DataFrame

dict_obj = {'key1' : ['a', 'b', 'a', 'b', 'a', 'b', 'a', 'a'],

       'key2' : ['one', 'one', 'two', 'three','two', 'two', 'one', 'three'],

       'data1': np.random.randn(10),

       'data2': np.random.randn(10)}

df_obj = DataFrame(dict_obj)

print(df_obj)

print(df_obj.groupby('key1'))

print(type(df_obj.groupby('key1')))

print(df_obj['data1'].groupby(df_obj['key1']))

print(type(df_obj['data1'].groupby(df_obj['key1'])))

import pandas as pd

import numpy as np

from pandas import Series,DataFrame

dict_obj = {'key1' : ['a', 'b', 'a', 'b', 'a', 'b', 'a', 'a'],

       'key2' : ['one', 'one', 'two', 'three','two', 'two', 'one', 'three'],

       'data1': np.random.randn(10),

       'data2': np.random.randn(10)}

df_obj = DataFrame(dict_obj)

print(df_obj)

grouped1 = df_obj.groupby('key1')

print(grouped1.mean())

grouped2 = df_obj['data1'].groupby(df_obj['key1'])

print(grouped2.mean())

print(grouped1.size()) # 返回每个分组的元素个数

print(grouped2.size())

print(df_obj.groupby([df_obj['key1'], df_obj['key2']]).size())

grouped3 = df_obj.groupby(['key1', 'key2'])

print(grouped3.size())

print(grouped3.mean())

dict_obj = {'key1' : ['a', 'b', 'a', 'b', 'a', 'b', 'a', 'a'],

       'key2' : ['one', 'one', 'two', 'three','two', 'two', 'one', 'three'],

       'data1': np.random.randn(10),

       'data2': np.random.randn(10)}

df_obj = DataFrame(dict_obj)

print(df_obj)

self_def_key = [0, 1, 2, 3, 3, 4, 5, 7]

print(df_obj.groupby(self_def_key).size())

10.3.11 cut()函数

#10.3.11 cut()函数

import pandas as pd

import numpy as np

from pandas import DataFrame

info_nums = DataFrame({'num': np.random.randint(1, 50, 11)})

print(info_nums)

info_nums['num_bins'] = pd.cut(x=info_nums['num'], bins=[1, 25, 50])

print(info_nums)

print(info_nums['num_bins'].unique())

#演示如何向箱子添加标签

import pandas as pd

import numpy as np

from pandas import DataFrame

info_nums = DataFrame({'num': np.random.randint(1, 10, 7)})

print(info_nums)

info_nums['nums_labels'] = pd.cut(x=info_nums['num'], bins=[1, 7, 10], labels=['Lows', 'Highs'], right=False)

print(info_nums)

print(info_nums['nums_labels'].unique())

10.4 汇总和描述统计

10.4.1 与描述统计相关的函数

#10.4 汇总和描述统计

import numpy as np

import pandas as pd

from pandas import Series,DataFrame

df=DataFrame([[1.3,np.nan],[6.2,-3.4],[np.nan,np.nan],[0.65,-1.4]],columns=['one','two'])

print(df.sum())  #计算每列的和,默认排除NaN

print(df.sum(axis=1))  #计算每行的和,默认排除NaN

#计算每行的和,设置skipna=False,NaN参与计算,结果仍为NaN

print(df.sum(axis=1,skipna=False))

print(df.mean(axis=1))

print(df.mean(axis=1,skipna=False))  #计算每行的平均值,NaN参与运算

print(df.cumsum())   #求样本值的累计和

print(df.describe())    #针对列计算汇总统计

10.4.2 唯一值、值计数以及成员资格

import numpy as np

import pandas as pd

from pandas import Series,DataFrame

#判断Series中的值是否重复,False表示重复

s = Series([3, 3, 1, 2, 4, 3, 4, 6, 5, 6])

print(s.is_unique)

#输出Series中不重复的值,返回值没有排序,返回值的类型为数组

print(s.unique())

#统计Series中重复值出现的次数,默认是按出现次数降序排序

print(s.value_counts())

#按照重复值的大小排序输出频率

print(s.value_counts(sort=False))

s = Series([6,6,7,2,2])

print(s)

#判断矢量化集合的成员资格,返回一个布尔类型的Series

print(s.isin([6]))

print(type(s.isin([6])))

#通过成员资格方法选取Series中的数据子集

print(s[s.isin([6])])

data = [[4,3,7],[3,2,5],[7,3,6]]

df = DataFrame(data,index=["a","b","c"],columns=["one","two","three"])

print(df)

#返回一个布尔型的DataFrame

print(df.isin([2]))

SULT

只需要看10.3和10.4理解就可以

10.5 处理缺失数据

10.5.1检查缺失值

为了更容易地检测缺失值,pandas提供了isnull()和notnull()函数,它们也是Series和DataFrame对象的方法。

df = DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print(df['one'].isnull())

print(df['one'].notnull())

10.5.2清理/填充缺失值——10.5.3 丢失缺少的值

import numpy as np

import pandas as pd

from pandas import Series,DataFrame

df = DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print(df)

print(df.dropna())  #默认情况下,axis = 0,即在行上应用

print(df.dropna(axis=1))  # axis = 1时在列上应用

# 可以用一些具体的值取代一个通用的值

df = DataFrame({'one':[1,2,3,4,5,300],'two':[200,0,3,4,5,6]})

print(df)

print(df.replace({200:10,300:60}))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10.使用Pandas进行数据与处理 的相关文章

  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • 从 Azure ML 实验中访问 Azure Blob 存储

    Azure ML 实验提供了通过以下方式读取 CSV 文件并将其写入 Azure Blob 存储的方法 Reader and Writer模块 但是 我需要将 JSON 文件写入 blob 存储 由于没有模块可以执行此操作 因此我尝试在Ex
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • AttributeError:“模块”对象没有属性[重复]

    这个问题在这里已经有答案了 我有两个 python 模块 a py import b def hello print hello print a py print hello print b hi b py import a def hi
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • Plotly:如何检查基本图形结构(版本 4)

    对于旧版本的plotly 例如在 Jupyterlab 中 您可以简单地运行figure像这样检查你的图形的基础知识 Ouput data marker color red size 10 symbol 104 mode markers l
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • pandas 相当于 np.where

    np where具有向量化 if else 的语义 类似于 Apache Spark 的when otherwise数据帧方法 我知道我可以使用np where on pandas Series but pandas通常定义自己的 API
  • 是否需要关闭没有引用它们的文件?

    作为一个完全的编程初学者 我试图理解打开和关闭文件的基本概念 我正在做的一项练习是创建一个脚本 允许我将内容从一个文件复制到另一个文件 in file open from file indata in file read out file
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 使用 Python 将连续日期分组在一起

    Given dates datetime 2014 10 11 datetime 2014 10 1 datetime 2014 10 2 datetime 2014 10 3 datetime 2014 10 5 datetime 201
  • 检测是否从psycopg2游标获取?

    假设我执行以下命令 insert into hello username values me 我跑起来就像 cursor fetchall 我收到以下错误 psycopg2 ProgrammingError no results to fe
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • 如何将带有参数的Python装饰器实现为类?

    我正在尝试实现一个接受一些参数的装饰器 通常带有参数的装饰器被实现为双重嵌套闭包 如下所示 def mydecorator param1 param2 do something with params def wrapper fn def
  • 如何给URL添加变量?

    我正在尝试从网站收集数据 我有一个 Excel 文件 其中包含该网站的所有不同扩展名 F i www example com example2 我有一个脚本可以成功从网站中提取 HTML 但现在我想为所有扩展自动执行此操作 然而 当我说 s
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 如何从namedtuple实例列表创建pandas DataFrame(带有索引或多索引)?

    简单的例子 from collections import namedtuple import pandas Price namedtuple Price ticker date price a Price GE 2010 01 01 30
  • pandas 中数据帧中的随机/洗牌行

    我目前正在尝试找到一种方法来按行随机化数据框中的项目 我在 pandas 中按列洗牌 排列找到了这个线程 在 pandas 中对 DataFrame 进行改组 排列 https stackoverflow com questions 157
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不

随机推荐

  • IOS集成ctp,恒生,金仕达穿透式监管的一点坑

    官方文档有些问题遗漏 1 要将引入对应头文件的文件用 mm后缀支持c 语法 不然会出现Expected 报错 不支持int 2 在解析的时候存在一些差异 CTP GetSystemInfo返回的数据实际是用char 接收的纯byte数据 用
  • 用RCircos包来画圈圈图

    用RCircos包来画圈圈图 我先讲解了画图 再讲解了一些小知识 安装并加载必须的packages 如果你还没有安装 就运行下面的代码安装 install packages RCircos library RCircos 如果你安装好了 就
  • GCC详解

    开放 自由和灵活是Linux的魅力所在 而这一点在gcc上的体现就是程序员通过它能够更好地控制整个编译过程 在使用gcc编译程序时 编译过程可以细分为 个阶段 预处理 Pre Processing 编译 Compiling 汇编 Assem
  • Linux命令大全(手册)

    https www linuxcool com
  • Android OkHttp源码阅读详解一

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 前言 源码阅读基于okhttp 3 10 0 Android中OkHttp源码阅读二 责任链模式 implementation com
  • 【100天精通python】Day42:python网络爬虫开发_HTTP请求库requests 常用语法与实战

    目录 1 HTTP协议 2 HTTP与HTTPS 3 HTTP请求过程 3 1 HTTP请求过程 3 2 GET请求与POST请求 3 3
  • 树莓派快速扩容

    当树莓派默认的系统空间已经被占满 无法再进行安装等操作 而 SD卡仍有空间未被使用 可以对树莓派进行扩容 假设一个镜像的大小为 4G 由于该镜像对内存卡的要求是大于或等于 4G 但对于 4G以上的内存卡来说 树莓派的系统只利用到 4G 因此
  • 2.机器学习之单变量线性回归(李宏毅)

    2 单变量线性回归 Linear Regression with One Variable 2 1 模型表示 Model Represention 以前面说的例子 房子的价格是个回归问题 回归一词指的是 我们根据之前的数据预测出一个准确的输
  • 拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 工作准备 一台SQLSERVER 2005 SQLSERVER 2008服务 SQLSERVER jdbc驱动程序 Java开发环境eclipse jdk1 8 java反
  • java爬虫代码示例_Excel VBA 实战(8) - 巨潮资讯 VBA 爬虫

    2019年6月25日 更新 由于巨潮资讯查询API变更 此文章当中的所涉及代码也进行了相应更新 虽然原代码当前已经失效 但是爬虫的基本逻辑仍然适用 因此请没有相关基础的朋友们先行阅读此文 实战代码部分请移步至如下链接 杨风飒 Excel V
  • Spring data Jpa操作ES

    以下是使用Spring data Jpa操作ES的一些记录 在ElasticsearchRepository中我们可以使用Not Add Like Or Between等关键词自动创建查询语句 记住上面这句话 代码示例 public int
  • 【Linux】进程信号 -- 信号产生

    信号的旧识引入 信号引入 signal调用 系统调用向目标进程发送信号 模拟实现一个kill命令 raise给自己发送任意信号 abort给自己发送指定信号 6 SIGABRT 硬件异常产生信号 除0异常 野指针访问异常 软件条件产生信号
  • git: ‘remote-codecomit‘ is not a git command. See ‘git --help‘.

    git remote codecomit is not a git command See git help 是什么情况出现该错误 重复安装python后出现 做过的尝试 在谷歌百度各大网站上找寻没有发现跟我类似的情况 然后就是尝试重新安装
  • MQTT、CoAP 还是 LwM2M?主流物联网协议如何选择

    随着物联网技术的发展与普及 越来越多的智能设备具备了网络连接与数据传输能力 由于物联网场景复杂多样 设备端硬件条件 网络稳定性 流量限制 设备功耗以及设备连接数量等多方面因素造成物联网设备的消息传递与传统互联网场景有着很大不同 也因此产生了
  • SQLi LABS Less-35

    第三十五关注入点为 数值型 注入方式为 报错注入 此关卡通过 代码WAF 转义了单引号 我们使用 编译 绕过WAF 先上结果 id 1 and updatexml 1 concat 0x7e substr select group conc
  • qaz69.com forum.php,Eclipse Community Forums

    Originally posted by richkulp us NO SPAM ibm com This is a multi part message in MIME format 080707010607010307000006 Co
  • 尝试简单的Spigot插件开发, PowerItemCraft 武器增强插件 (Spigot开发笔记-2)

    文章目录 创建项目 插件功能蓝图 实现思路 1 指令模块 2 事件模块 3 插件中间层 3 1 主类的工作 3 2 如何解耦 完整插件 创建项目 根据 Spigot开发笔记 1 中的内容创建好项目 插件功能蓝图 匠魂mod中有一个随着使用会
  • 一文读懂JVM类加载机制过程及原理

    目录 一 做一个小测试 通过注释 标注出下面两个类中每个方法的执行顺序 并写出studentId的最终值 二 类的初始化步骤 三 看看你写对了没 四 类的加载过程 1 加载 2 链接 3 初始化 五 类加载器的分类 1 启动类加载器 引导类
  • CSS DIV大图片右上角叠加小图片

  • 10.使用Pandas进行数据与处理

    补充 10 1 NUMPY的基本使用方法 NUMPY是Python语言的一个扩充程序库 支持高级的数组和矩阵运算 10 1 1数组创建 import numpy as np a 1 2 3 4 5 创建简单的列表 b np array a