Python数据挖掘Pandas详解

目录
  • 1 DataFrame
    • 1.1 构造dataframe 利用DataFrame函数
    • 1.2 常用操作(设置索引)
    • 1.3 MultiIndex与Panel
    • 1.4 Series
  • 2 基本数据操作
    • 2.1 索引操作
    • 2.2 赋值操作
    • 2.3 排序
    • 2.4 数学运算
    • 2.5 统计运算
  • 3 画图
    • 3.1 pandas.DataFrame.plot
  • 4 文件读取写入
    • 4.1 CSV文件
    • 4.2 HDF5文件
    • 4.3 JSON文件
  • 5 高级处理
    • 5.1 缺失值(标记值)处理
    • 5.2 离散化
    • 5.3 合并
    • 5.4交叉表与透视表
    • 5.5 分组与聚合
  • 6 案例

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表示一种方法可以是,相当于利用一种编码的方式表示

编码
小明 1 0 1 0
小红 0 1 0 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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python数据挖掘中常用的五种AutoEDA 工具总结

    我们能否使用一些自动化工具代替人来完成数据分析的过程呢,现有一些成熟的 AutoEDA 工具可以一定程度上完成上述过程.本文中,我将盘点常见的 AutoEDA 工具,欢迎收藏学习,喜欢点赞支持,文末提供技术交流群,欢迎畅聊. 1.Pandas Profiling https://pandas-profiling.github.io/pandas-profiling/docs/master/index.html Pandas Profiling是款比较成熟的工具,可以直接传入DataFrame即可

  • python 数据挖掘算法的过程详解

    目录 1.首先简述数据挖掘的过程 第一步:数据选择 第二步:数据预处理 第三步:特征值数据转换 第四步:模型训练 第五步:测试模型+效果评估 第六步:模型使用 第七步:解释与评价 2.主要的算法模型讲解——基于sklearn 3.sklearn自带方法joblib来进行保存训练好的模型 1.首先简述数据挖掘的过程 第一步:数据选择 可以通过业务原始数据.公开的数据集.也可通过爬虫的方式获取. 第二步: 数据预处理 数据极可能有噪音,不完整等缺陷,需要对数据进行数据标准化,方法有min-max 标

  • python数据挖掘Apriori算法实现关联分析

    目录 摘要: 关联分析 Apriori原理 算法实现 挖掘关联规则 利用Apriori算法解决实际问题 发现毒蘑菇的相似特征 总结: 摘要: 主要是讲解一些数据挖掘中频繁模式挖掘的Apriori算法原理应用实践 当我们买东西的时候,我们会发现物品展示方式是不同,购物以后优惠券以及用户忠诚度也是不同的,但是这些来源都是大量数据的分析,为了从顾客身上获得尽可能多的利润,所以需要用各种技术来达到目的. 通过查看哪些商品一起购物可以帮助商店了解客户的购买行为.这种从大规模数据集中寻找物品间的隐含关系被称

  • 数据挖掘之Apriori算法详解和Python实现代码分享

    关联规则挖掘(Association rule mining)是数据挖掘中最活跃的研究方法之一,可以用来发现事情之间的联系,最早是为了发现超市交易数据库中不同的商品之间的关系.(啤酒与尿布) 基本概念 1.支持度的定义:support(X-->Y) = |X交Y|/N=集合X与集合Y中的项在一条记录中同时出现的次数/数据记录的个数.例如:support({啤酒}-->{尿布}) = 啤酒和尿布同时出现的次数/数据记录数 = 3/5=60%. 2.自信度的定义:confidence(X-->

  • python数据挖掘需要学的内容

    1.Pandas库的操作 Panda是数据分析特别重要的一个库,我们要掌握以下三点: · pandas 分组计算; · pandas 索引与多重索引; 索引比较难,但是却是非常重要的 · pandas 多表操作与数据透视表 2.numpy数值计算 numpy数据计算主要应用是在数据挖掘,对于以后的机器学习,深度学习,这也是一个必须掌握的库,我们要掌握以下内容: · Numpy array理解: · 数组索引操作: · 数组计算: · Broadcasting(线性代数里面的知识) 3.数据可视化

  • Python Pandas聚合函数的应用示例

    目录 Python Pandas聚合函数 应用聚合函数 1) 对整体聚合 2) 对任意某一列聚合 3) 对多列数据聚合 4) 对单列应用多个函数 5) 对不同列应用多个函数 6) 对不同列应用不同函数 总结 Python Pandas聚合函数 在前一节,我们重点介绍了窗口函数.我们知道,窗口函数可以与聚合函数一起使用,聚合函数指的是对一组数据求总和.最大值.最小值以及平均值的操作,本节重点讲解聚合函数的应用. 应用聚合函数 首先让我们创建一个 DataFrame 对象,然后对聚合函数进行应用.

  • Python数据挖掘Pandas详解

    目录 1 DataFrame 1.1 构造dataframe 利用DataFrame函数 1.2 常用操作(设置索引) 1.3 MultiIndex与Panel 1.4 Series 2 基本数据操作 2.1 索引操作 2.2 赋值操作 2.3 排序 2.4 数学运算 2.5 统计运算 3 画图 3.1 pandas.DataFrame.plot 4 文件读取写入 4.1 CSV文件 4.2 HDF5文件 4.3 JSON文件 5 高级处理 5.1 缺失值(标记值)处理 5.2 离散化 5.3

  • TF-IDF算法解析与Python实现方法详解

    TF-IDF(term frequency–inverse document frequency)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术.比较容易理解的一个应用场景是当我们手头有一些文章时,我们希望计算机能够自动地进行关键词提取.而TF-IDF就是可以帮我们完成这项任务的一种统计方法.它能够用于评估一个词语对于一个文集或一个语料库中的其中一份文档的重要程度. 在一份给定的文件里,词频 (term frequency, T

  • python 字段拆分详解

    按照固定的字符,拆分已有的字符串 split(sep, n, expand = False) :sep:用于分割的字符串 n:分割为多少列 expand:是否展开为数据框,默认值为False (expand为True,返回DataFrame.False,Series) from pandas import read_csv; df = read_csv('F://baiduNetdisk//pytorch//4//4.7//data.csv') df = df.astype(str) df3 =

  • Python数据可视化详解

    目录 一.Matplotlib模块 1.绘制基本图表 1. 绘制柱形图 2. 绘制条形图 3. 绘制折线图 4. 绘制面积图 5. 绘制散点图 6. 绘制饼图和圆环图 2.图表的绘制和美化技巧 1. 在一张画布中绘制多个图表 2. 添加图表元素 3. 添加并设置网格线 4. 调整坐标轴的刻度范围 3.绘制高级图表 1. 绘制气泡图 2. 绘制组合图 3. 绘制直方图 4. 绘制雷达图 5. 绘制树状图 6. 绘制箱形图 7. 绘制玫瑰图 二.pyecharts模块 1.图表配置项 2.绘制漏斗图

  • Python网络编程详解

    1.服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的"服务".它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求. 2.客户端/服务器架构既可以应用于计算机硬件,也可以应用于计算机软件. 3.在服务器响应客户端之前,首先会创建一个通信节点,它能够使服务器监听请求. 一.套接字:通信端点 1.套接字 套接字是计算机网络数据结构,它体现了上节中所描述的"通信端点"的概念.在任何类型的通信开始之前,网络应用程序必须创建套接字

  • Python 多线程实例详解

    Python 多线程实例详解 多线程通常是新开一个后台线程去处理比较耗时的操作,Python做后台线程处理也是很简单的,今天从官方文档中找到了一个Demo. 实例代码: import threading, zipfile class AsyncZip(threading.Thread): def __init__(self, infile, outfile): threading.Thread.__init__(self) self.infile = infile self.outfile =

  • Docker 打包python的命令详解

    最近用Python写了一段爬虫程序,为了隔离其运行环境,易于分发,把项目打包成Docker镜像 Dockerfile FROM python:2.7.12-alpine ADD ./src /job CMD ["python", "/job/main.py"] 构建命令 $ docker build -t job . 运行 $ docker run -d --name job job 比较简单 以上所述是小编给大家介绍的Docker 打包python的命令详解,希望

  • windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此,我们这里使用Python这个脚本语言来进行数字图像处理. 要使用Python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是Linux系统,安装都是非常简单的. 要使用python进行各种开发和科学计算,还需要安装对应的包.这和matlab非常相似,只是matla

  • 基于python爬虫数据处理(详解)

    一.首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数 1.1.设置变量 set @变量名=值 set @address='中国-山东省-聊城市-莘县'; select @address 1.2 .length()函数 char_length()函数区别 select length('a') ,char_length('a') ,length('中') ,char_length('中') 1.3. replace() 函数

  • Python 操作MySQL详解及实例

    Python 操作MySQL详解及实例 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy. Python-MySQL资格最老,核心由C语言打造,接口精炼,性能最棒,缺点是环境依赖较多,安装复杂,近两年已停止更新,只支持Python2,不支持Python3. PyMySQL为替代Python-MySQL而生,纯python打造,接口与Python-MySQL兼容,安装方便,支持Python3. SQLA

随机推荐