我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python数据挖掘Pandas详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python数据挖掘Pandas详解

1 DataFrame

在这里插入图片描述

  • Pandas=panel+data+analysis
  • 专门用于数据挖掘的开源Python库
  • 以Numpy为基础,借力Numpy模块在计算方面性能高的优势
  • 基于matplotlib,能够简便的画图
  • 独特的数据结构
  • 便捷的数据处理能力
  • 读取文件方便
  • 封装了Matplotlib、Numpy的画图和计算

核心数据结构

  • DataFrame (是series的容器,一般二维)
  • Panel(是dataframe的容器,三维)
  • Series(一维)

1.1 构造dataframe 利用DataFrame函数

  • 索引:行索引-index,横向索引;列索引-columns,纵向索引
  • 值:values,利用values即可直接获得去除索引的数据(数组)
  • shape:表明形状 (形状不含索引的行列)
  • T:行列转置

DataFrame是一个既有行索引又有列索引的二维数据结构

import numpy as np
import pandas as pd 
a=np.ones((2,3))
b=pd.DataFrame(a)
print(a)
print(b)

在这里插入图片描述

如图,生成的打他frame是一个二维表,由于没有指定索引,因此默认行列索引为数字序号

1.2 常用操作(设置索引)

1.获取局部展示

   b.head()#默认展示前5行,可在head()加入数字,展示前几行
   b.tail()#默认展示后5行,可在tail()加入数字,展示后几行

2.获取索引和值

import  numpy as np
   # 创建一个符合正态分布的10个股票5天的涨跌幅数据
stock_change = np.random.normal(0, 1, (10, 5))
pd.DataFrame(stock_change)
#设置行列索引
stock = ["股票{}".format(i) for i in range(10)]
date = pd.date_range(start="20200101", periods=5, freq="B")#这个是pandas中设置日期的
# 添加行列索引
data = pd.DataFrame(stock_change, index=stock, columns=date)
print(data)

在这里插入图片描述

3.设置行列索引

# 创建一个符合正态分布的10个股票5天的涨跌幅数据
stock_change = np.random.normal(0, 1, (10, 5))
pd.DataFrame(stock_change)
#设置行列索引
stock = ["股票{}".format(i) for i in range(10)]
date = pd.date_range(start="20200101", periods=5, freq="B")#这个是pandas中设置日期的
# 添加行列索引
data = pd.DataFrame(stock_change, index=stock, columns=date)
print(data)

在这里插入图片描述

4.修改索引

#不能单独修改行列总某一个索引的值,可以替换整行或整列   例:b.index[2]='股票1'  错误
data.index=新行索引
#重设索引
data.reset_index(drop=False)
#drop参数默认为False,表示将原来的索引替换掉,换新索引为数字递增,原来的索引将变为数据的一部分。True表示,将原来的索引删除,更换为数字递增。如下图

在这里插入图片描述

# 设置新索引
df = pd.DataFrame({'month': [1, 4, 7, 10],
                    'year': [2012, 2014, 2013, 2014],
                    'sale':[55, 40, 84, 31]})
# 以月份设置新的索引
df.set_index("month", drop=True)
#见下图,即将原本数据中的一列拿出来作为index
new_df = df.set_index(["year", "month"])# 设置多个索引,以年和月份   多个索引其实就是MultiIndex

在这里插入图片描述

可以看到下面的new_df已经是multiIndex类型数据了。

有三级:index index.names index.levels

分别看各自的输出

在这里插入图片描述

1.3 MultiIndex与Panel

MultiIndex:多级或分层索引对象

Panel

pandas.Panel(data=None,items=None,major_axis=None,minor_axis=None,copy=False,dtype=None)

存储3维数组的Panel结构

  • items - axis 0,每个项目对应于内部包含的数据帧(DataFrame)。
  • major_axis - axis 1,它是每个数据帧(DataFrame)的索引(行)。
  • minor_axis - axis 2,它是每个数据帧(DataFrame)的列。
items - axis 0,每个项目对应于内部包含的数据帧(DataFrame)。
major_axis - axis 1,它是每个数据帧(DataFrame)的索引(行)。
minor_axis - axis 2,它是每个数据帧(DataFrame)的列。

在这里插入图片描述

Pandas从版本0.20.0开始弃用,推荐的用于表示3D数据的方法是DataFrame上的MultiIndex方法

1.4 Series

带索引的一维数组

  • index
  • values
# 创建
pd.Series(np.arange(3, 9, 2), index=["a", "b", "c"])
# 或
pd.Series({'red':100, 'blue':200, 'green': 500, 'yellow':1000})

sr = data.iloc[1, :]
sr.index # 索引
sr.values # 值

#####就是从dataframe中抽出一行或一列来观察
12345678910

2 基本数据操作

2.1 索引操作

data=pd.read_csv("./stock_day/stock_day.csv")#读入文件的前5行表示如下
######利用drop删除某些行列,需要利用axis告知函数是行索引还是列索引
data=data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"], axis=1) # 去掉一些不要的列
data["open"]["2018-02-26"] # 直接索引,但需要遵循先列后行
#####按名字索引利用.loc函数可以不遵循列行先后关系
data.loc["2018-02-26"]["open"] # 按名字索引
data.loc["2018-02-26", "open"]
#####利用.iloc函数可以只利用数字进行索引
data.iloc[1][0] # 数字索引
data.iloc[1,0]
# 组合索引
# 获取行第1天到第4天,['open', 'close', 'high', 'low']这个四个指标的结果
data.ix[:4, ['open', 'close', 'high', 'low']] # 现在不推荐用了
###但仍可利用loc和iloc
data.loc[data.index[0:4], ['open', 'close', 'high', 'low']]
data.iloc[0:4, data.columns.get_indexer(['open', 'close', 'high', 'low'])]

2.2 赋值操作

data仍然是上图类型

data.open=100
data['open']=100
###两种方式均可
data.iloc[1,0]=100
###找好索引即可

2.3 排序

sort_values (比较values进行排序) sort_index (比较行索引进行排序,不行可以先转置简介对列排序)

data.sort_values(by="high", ascending=False) # DataFrame内容排序,ascending表示升序还是降序,默认True升序

data.sort_values(by=["high", "p_change"], ascending=False).head() # 多个列内容排序。给出的优先级进行排序

data.sort_index(ascending=True)###对行索引进行排序

#这里是取出了一列 “price_change”列,为serise,用法同上
sr = data["price_change"]
sr.sort_values(ascending=False)
sr.sort_index()

2.4 数学运算

布尔值索引

算术运算:直接利用运算符或者函数

#正常的加减乘除等的运算即可
data["open"] + 3
data["open"].add(3) # open统一加3  
data.sub(100)# 所有统一减100 data - 100
(data["close"]-(data["open"])).head() # close减open

逻辑运算 :< ; > ; | ; & 利用逻辑符号或者函数query

# 例如筛选p_change > 2的日期数据
data[data["p_change"] > 2].head()
# 完成一个多个逻辑判断, 筛选p_change > 2并且low > 15
data[(data["p_change"] > 2) & (data["low"] > 15)].head()
data.query("p_change > 2 & low > 15").head()###等效于上一行代码

###判断# 判断'turnover'列索引中是否有4.19, 2.39,将返回一列布尔值
data["turnover"].isin([4.19, 2.39])##如下图

利用布尔值索引,即利用一个布尔数组索引出True的数据

###判断# 判断'turnover'列索引中是否有4.19, 2.39,将返回一列布尔值
data["turnover"].isin([4.19, 2.39])##如下图
data[data["turnover"].isin([4.19, 2.39])]
#这块就将返回turnover列布尔值为true的如下图,也就是筛选出turnover中值为4.19和2.39
###布尔值索引是一个很方便的数据筛选操作,比如:
data[data["turnover"]>0.1]
#也将筛选出turnover列中大于0.1的整体data数据,并不是说只返回turnover相关数据,判断只是返回布尔索引,利用索引的是data数据

2.5 统计运算

data.describe()
#将返回关于列的最值,均值,方差等多种信息
##其实这里很多就和numpy相似了
data.max(axis=0)#返回最值
data.idxmax(axis=0) #返回最值索引

累计统计函数(累加,累乘等)

  • cumsum 计算前1/2/3/…/n个数的和
  • cummax 计算前1/2/3/…/n个数的最大值
  • cummin 计算前1/2/3/…/n个数的最小值
  • cumprod 计算前1/2/3/…/n个数的积

自定义运算

apply(func, axis=0)

func: 自定义函数

axis=0: 默认按列运算,axis=1按行运算

data.apply(lambda x: x.max() - x.min())
#这里的lambda x: x.max() - x.min()是lambda表达式,是函数的简单写法也可
def fx(data):
	return	data.max()-data.min()

3 画图

3.1 pandas.DataFrame.plot

  • x: label or position, default None
  • y: label, position or list of label, positions, default None
  • Allows plotting of one column versus another
  • kind: str
  • ‘line’: line plot(default)
  • ''bar": vertical bar plot
  • “barh”: horizontal bar plot
  • “hist”: histogram
  • “pie”: pie plot
  • “scatter”: scatter plot
#更简易用matplotlib
data.plot(x="volume", y="turnover", kind="scatter")
data.plot(x="high", y="low", kind="scatter")
data['volume'].plot()

4 文件读取写入

4.1 CSV文件

DataFrame.to_csv(path_or_buf=None,sep=','columns=None,header=True,index=True,index_label=None,mode='w',encoding=None)
1
  • path_or_buf :string or file handle , default None
  • sep : character, default ‘,’(分隔符)
  • columns :sequence,optional
  • mode:'w‘:重写,'a’追加
  • index:是否写入 行索引
  • header:boolean or list of string,default True,是否写进列索引值
Series.to_csv (path=None,index=True,sep=',',na_rep='',float_format=None,header=False,index_label=None,mode='w',encoding=None,compression=None,date_format=None,decimal='.)

Write Series to a comma-separated values(csv)file

pd.read_csv("./stock_day/stock_day.csv", usecols=["high", "low", "open", "close"]).head() # 读哪些列

data = pd.read_csv("stock_day2.csv", names=["open", "high", "close", "low", "volume", "price_change", "p_change", "ma5", "ma10", "ma20", "v_ma5", "v_ma10", "v_ma20", "turnover"]) # 如果列没有列名,用names传入

data[:10].to_csv("test.csv", columns=["open"]) # 保存open列数据

data[:10].to_csv("test.csv", columns=["open"], index=False, mode="a", header=False) # 保存opend列数据,index=False不要行索引,mode="a"追加模式|mode="w"重写,header=False不要列索引

csv可以用excel表格打开,但是可能有格式错误

4.2 HDF5文件

read_hdf to_hdf

HDF5文件的读取和存储需要指定一个键,值为要存储的DataFrame,也就是说hdf5存储的是panel这种三维类型,一个key对应一个dataframe

pandas.read_hdf(path_or_buf, key=None, **kwargs)

从h5文件当中读取数据

  • path_or_buffer: 文件路径
  • key: 读取的键
  • mode: 打开文件的模式
  • reurn: The Selected object

DataFrame.to_hdf(path_or_buf, key, **kwargs)

day_close = pd.read_hdf("./stock_data/day/day_close.h5",key="close")
day_close.to_hdf("test.h5",key="close" )

4.3 JSON文件

read_json to_json

pandas.read_json(path_or_buf=None,orient=None,typ=“frame”,lines=False)

  • 将JSON格式转换成默认的Pandas DataFrame格式
  • orient: string,Indication of expected JSON string format.
  • ‘split’: dict like {index -> [index], columns -> [columns], data -> [values]}
  • ‘records’: list like [{column -> value}, …, {column -> value}]
  • ‘index’: dict like {index -> {column -> value}}
  • ‘columns’: dict like {column -> {index -> value}}, 默认该格式
  • ‘values’: just the values array
  • lines: boolean, default False
  • 按照每行读取json对象
  • typ: default ‘frame’,指定转换成的对象类型series或者dataframe
sa = pd.read_json("Sarcasm_Headlines_Dataset.json", orient="records", lines=True)
##主要是path,orient是一种确定索引与数值的对应,以本例来看,列索引就是‘key',values就是key对应的值
sa.to_json("test.json", orient="records", lines=True)

本示例中按行存储,每行是一个字典,键 有’article_link’,'headline’等

5 高级处理

5.1 缺失值(标记值)处理

主要参数

  • inplace实现数据替换(默认为False)
  • dropna实现缺失值的删除(默认删除行)
  • fillna实现缺失值的填充
  • isnull或notnull判断是否有缺失数据NaN

如何进行缺失值处理?

  • 删除含有缺失值的样本
  • 替换/插补数据

判断NaN是否存在

  • pd.isnull(df) 会返回整个dataframe的布尔框架,难以观察(bool为True代表那个位置是缺失值)
  • pd.isnull(df).any() 表示只要有一个True就返回True
  • pd.notnull(df)会返回整个dataframe的布尔框架,难以观察(bool为False代表那个位置是缺失值)
  • pd.notnull(df).all() 表示只要有一个False就返回False

删除nan数据

  • df.dropna(inplace=True) 默认按行删除 inplace:True修改原数据,False返回新数据,默认False

替换nan数据

  • df.fillna(value,inplace=True)
  • value替换的值
  • inplace:True修改原数据,False返回新数据,默认False
movie["Revenue (Millions)"].fillna(movie["Revenue (Millions)"].mean(), inplace=True)
###这就是先利用其他代码判断出"Revenue (Millions)"有nan数据,然后利用.fillna函数,令value=movie["Revenue (Millions)"].mean()列的均值,然后inplace=True修改原数据
import pandas as pd
import numpy as np
movie = pd.read_csv("./IMDB/IMDB-Movie-Data.csv")
# 1)判断是否存在NaN类型的缺失值
np.any(pd.isnull(movie)) # 返回True,说明数据中存在缺失值
np.all(pd.notnull(movie)) # 返回False,说明数据中存在缺失值
pd.isnull(movie).any()
pd.notnull(movie).all()

# 2)缺失值处理
# 方法1:删除含有缺失值的样本
data1 = movie.dropna()
pd.notnull(data1).all()

# 方法2:替换
# 含有缺失值的字段
# Revenue (Millions)    
# Metascore
movie["Revenue (Millions)"].fillna(movie["Revenue (Millions)"].mean(), inplace=True)
movie["Metascore"].fillna(movie["Metascore"].mean(), inplace=True)

替换非nan的标记数据

有些数据不存在可能标记为“#”,“?”等

# 读取数据
path = "wisconsin.data"
name = ["Sample code number",  "Normal Nucleoli","Mitoses", "Class"]
data = pd.read_csv(path, names=name)

#这里的非nan标记值缺失值就是利用“?”表示的,因此利用参数to_replace,value=np.nan,将默认标记值替换为nan值,然后再利用签署方法处理nan缺失值
# 1)替换
data_new = data.replace(to_replace="?", value=np.nan)

5.2 离散化

这一块建议去看视频,理解更快:视频地址

  • 连续属性的离散化就是将连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数 值代表落在每个子区间的属性值。
  • 连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。
  • 实现方法:

1.分组

  • 自动分组 sr = pd.qcut(data, bins)
  • 自定义分组 sr = pd.cut(data, [])

2.将分组好的结果转换成one-hot编码(哑变量)

  • pd.get_dummies(sr, prefix=)

one-hot编码:
one-hot

比如男女数据一般用1和0表示,但1和0本身有大小问题,而男女只是不同的概念,因此用1,0表示会存在区别

(男:1 女:0)性别
小明1
小红0

如果用one-hot表示一种方法可以是,相当于利用一种编码的方式表示

编码
小明101 0
小红010 1

同时还可处理连续数据,比如将身高的连续数据分为不同的身高区间,每个区间对应一个类别,然后类比同上来考虑

# 1)准备数据
data = pd.Series([165,174,160,180,159,163,192,184], index=['No1:165', 'No2:174','No3:160', 'No4:180', 'No5:159', 'No6:163', 'No7:192', 'No8:184']) 
# 2)分组
# 自动分组
sr = pd.qcut(data, 3)
sr.value_counts()  # 看每一组有几个数据
# 3)转换成one-hot编码
pd.get_dummies(sr, prefix="height")

# 自定义分组
bins = [150, 165, 180, 195]#这就表示有三组[150,165][165,180][180,195]
sr = pd.cut(data, bins)
# get_dummies
pd.get_dummies(sr, prefix="身高")

5.3 合并

指合并不同dataframe上的内容数据

按方向

pd.concat([data1, data2], axis=1) 
#axis:0为列索引;1为行索引

按索引

merge函数参数API

left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                        'key2': ['K0', 'K1', 'K0', 'K1'],
                        'A': ['A0', 'A1', 'A2', 'A3'],
                        'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                        'key2': ['K0', 'K0', 'K0', 'K0'],
                        'C': ['C0', 'C1', 'C2', 'C3'],
                        'D': ['D0', 'D1', 'D2', 'D3']})
pd.merge(left, right, how="inner", on=["key1", "key2"])
pd.merge(left, right, how="left", on=["key1", "key2"])
pd.merge(left, right, how="outer", on=["key1", "key2"])
###这里merge参数解释:
#left: 需要合并的一个表,合并后在左侧
#right:需要合并的一个表,合并后在右侧
#how: 合并方式
#on: 在哪些索引上进行合并

5.4交叉表与透视表

交叉表

  • 交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)
  • pd.crosstab(value1, value2)
data = pd.crosstab(stock["week"], stock["pona"])
data.div(data.sum(axis=1), axis=0).plot(kind="bar", stacked=True)

透视表

相对于交叉表操作简单些

# 透视表操作
stock.pivot_table(["pona"], index=["week"])

5.5 分组与聚合

  • 分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况。
  • DataFrame.groupby(key, as_index=False) key:分组的列数据,可以多个
col =pd.DataFrame({'color': ['white','red','green','red','green'], 'object': ['pen','pencil','pencil','ashtray','pen'],'price1':[5.56,4.20,1.30,0.56,2.75],'price2':[4.75,4.12,1.60,0.75,3.15]})

# 进行分组,对颜色分组,price1进行聚合
# 用dataframe的方法进行分组
col.groupby(by="color")

# 或者用Series的方法进行分组聚合
col["price1"].groupby(col["color"])

6 案例

要求

  1. 想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
  2. 对于这一组电影数据,如果我们想看Rating,Runtime(Minutes)的分布情况,应该如何呈现数据?
  3. 对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何

处理数据?

数据结构展示

数据网址

在这里插入图片描述

代码

# 1、准备数据
movie = pd.read_csv("./IMDB/IMDB-Movie-Data.csv")
###movie读入后如上图所示
######################问题一
# 问题1:我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
# 评分的平均分
movie["Rating"].mean()
# 导演的人数
np.unique(movie["Director"]).size

######################问题二
##绘制直方图查看分布
movie["Rating"].plot(kind="hist", figsize=(20, 8))
#利用matplotlib可更细致绘图
import matplotlib.pyplot as plt
# 1、创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 2、绘制直方图
plt.hist(movie["Rating"], 20)
# 修改刻度
plt.xticks(np.linspace(movie["Rating"].min(),movie["Rating"].max(), 21))
# 添加网格
plt.grid(linestyle="--", alpha=0.5)
# 3、显示图像
plt.show()


######################问题三
##如果我们希望统计电影分类(genre)的情况,应该如何处理数据?
###可以发现图中genre一列数据中每个电影都有多种标签,因此要先分割
# 先统计电影类别都有哪些
movie_genre = [i.split(",") for i in movie["Genre"]]
###得到的movie_genre结构图见《下图一》
###这一块主要是把movie_genre的二维列表变为以为列表,然后利用unique函数去重
movie_class = np.unique([j for i in  movie_genre for j in i])
len(movie_class)####这就得到了电影的类型标签种类数

# 统计每个类别有几个电影
count = pd.DataFrame(np.zeros(shape=[1000, 20], dtype="int32"), columns=movie_class)
count.head()###得到的count结构如《下图二》
# 计数填表
for i in range(1000):
    count.ix[i, movie_genre[i]] = 1###注意ix现在不太能用了
    ############movie_genre[i]将返回字符索引列
#这就得到了下面第三张图片的数据处理效果,列表示电影类型种类,行表示不同电影,如《下图三》
#因此只需逐列求和即可得到每类标签电影的数量
##最终实现数据可视化如《下图四》
count.sum(axis=0).sort_values(ascending=False).plot(kind="bar", figsize=(20, 9), fontsize=40, colormap="cool")

到此这篇关于Python数据挖掘Pandas的文章就介绍到这了,更多相关Python数据挖掘Pandas内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python数据挖掘Pandas详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python/pandas数据挖掘(十四)-groupby,聚合,分组级运算

https://blog.csdn.net/youngbit007/article/details/54288603groupbyimport pandas as pddf = pd.DataFrame({"key1":list("aabba"),
python/pandas数据挖掘(十四)-groupby,聚合,分组级运算
2016-09-15

Python怎么实现数据挖掘

本篇内容主要讲解“Python怎么实现数据挖掘”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现数据挖掘”吧!这个Selenium模块主要是应对我们自动浏览网页数据所需要用的,让
2023-06-02

详解数据挖掘的技术、工具与用例

本文将和您讨论数据挖掘的基本概念、基本步骤、主要技术、优势、工具、以及典型用例。

NumPy数据挖掘指南:从数据中挖掘宝藏的秘诀

NumPy 是 Python 中用于科学计算的强大工具包,在数据挖掘领域发挥着至关重要的作用。掌握 NumPy 的技巧和知识,可以帮助您从数据中提取有价值的信息,揭示隐藏的趋势和洞察。
NumPy数据挖掘指南:从数据中挖掘宝藏的秘诀
2024-02-11

Python数据挖掘学习路程--起步

一、首先第一步我去了解了Python开发环境:Python(程序运行基础的解释器)+第三方类库(功能扩展)+编辑器(提高代码编辑效率)编辑器有:Pycharm、Spyder、jupyter notebook等Anaconda:包含了Pyth
2023-01-30

python数据挖掘算法的示例分析

这篇文章给大家分享的是有关python数据挖掘算法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、首先简述数据挖掘的过程第一步:数据选择可以通过业务原始数据、公开的数据集、也可通过爬虫的方式获取。第二
2023-06-29

python数据挖掘常用工具有哪几种?

python有强大的第三方库,广泛用于数据分析,数据挖掘、机器学习等领域,下面小编整理了python数据挖掘的一些常用库,希望对各位小伙伴学习python数据挖掘有所帮助。

使用Pandas进行时间重采样,充分挖掘数据价值

在Pandas中进行数据重采样,有助于可视化连续或离散时间数据中的趋势和规律,进一步挖掘数据价值,突出显示不同的组成部分,包括趋势、季节性和不规则问题(可能是数据中的噪音)。

数据挖掘概念与技术

数据挖掘是指从大量数据中发现有价值的信息或模式的过程。它是一种结合了统计学、机器学习、人工智能和数据库技术的综合性技术。数据挖掘技术包括以下几个方面:1. 数据预处理:对原始数据进行清洗、去噪、缺失值处理等操作,以提高数据的质量和可用性。2
2023-09-28

漏洞挖掘 | 挖SRC的新思路?一文详解国内AI场景漏洞挖掘

受邀参加HackinClub北京线下AI+网络安全主题会议,在台上给大家分享了《实践挖掘国内AI场景场景漏洞科技前沿与安全探索》议题。此篇文章给大家带来当时的src漏洞,AI场景实战案例。
漏洞挖掘 | 挖SRC的新思路?一文详解国内AI场景漏洞挖掘
2024-05-09

「数据挖掘入门系列」Python快速入门

Python环境搭建本次入门系列将使用Python作为开发语言。要使用Python语言,我们先来搭建Python开发平台。我们将基于Python 2.7版本、以及Python的开发发行版本Anaconda版本来开发。Anaconda指的是一个开源的Python
「数据挖掘入门系列」Python快速入门
2021-03-07

如何优化数据库的数据挖掘

优化数据库的数据挖掘可以通过以下几个方面来实现:数据清洗:在进行数据挖掘之前,首先需要对数据进行清洗,包括去除重复数据、处理缺失值、处理异常值等,以确保数据的质量和准确性。数据预处理:在数据挖掘之前,可以对数据进行预处理,包括数据变换、数据
如何优化数据库的数据挖掘
2024-07-03

pg数据库日志挖掘WalMiner

WalMiner是从PostgreSQL的WAL(write ahead logs)日志中解析出执行的SQL语句的工具,并能生成出对应的undo SQL语句。referenceXlogMiner renamed to WalMinerXlogMiner Enh
pg数据库日志挖掘WalMiner
2018-05-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录