欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python數(shù)據(jù)挖掘Pandas詳解

 更新時間:2022年07月12日 11:14:45   作者:趙廣陸  
這篇文章主要介紹了Python數(shù)據(jù)挖掘Pandas,pandas是基于numpy模塊構(gòu)建的,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1 DataFrame

在這里插入圖片描述

  • Pandas=panel+data+analysis
  • 專門用于數(shù)據(jù)挖掘的開源Python庫
  • 以Numpy為基礎(chǔ),借力Numpy模塊在計算方面性能高的優(yōu)勢
  • 基于matplotlib,能夠簡便的畫圖
  • 獨特的數(shù)據(jù)結(jié)構(gòu)
  • 便捷的數(shù)據(jù)處理能力
  • 讀取文件方便
  • 封裝了Matplotlib、Numpy的畫圖和計算

核心數(shù)據(jù)結(jié)構(gòu)

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

1.1 構(gòu)造dataframe 利用DataFrame函數(shù)

  • 索引:行索引-index,橫向索引;列索引-columns,縱向索引
  • 值:values,利用values即可直接獲得去除索引的數(shù)據(jù)(數(shù)組)
  • shape:表明形狀 (形狀不含索引的行列)
  • T:行列轉(zhuǎn)置

DataFrame是一個既有行索引又有列索引的二維數(shù)據(jù)結(jié)構(gòu)

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

在這里插入圖片描述

如圖,生成的打他frame是一個二維表,由于沒有指定索引,因此默認行列索引為數(shù)字序號

1.2 常用操作(設(shè)置索引)

1.獲取局部展示

   b.head()#默認展示前5行,可在head()加入數(shù)字,展示前幾行
   b.tail()#默認展示后5行,可在tail()加入數(shù)字,展示后幾行

2.獲取索引和值

import  numpy as np
   # 創(chuàng)建一個符合正態(tài)分布的10個股票5天的漲跌幅數(shù)據(jù)
stock_change = np.random.normal(0, 1, (10, 5))
pd.DataFrame(stock_change)
#設(shè)置行列索引
stock = ["股票{}".format(i) for i in range(10)]
date = pd.date_range(start="20200101", periods=5, freq="B")#這個是pandas中設(shè)置日期的
# 添加行列索引
data = pd.DataFrame(stock_change, index=stock, columns=date)
print(data)

在這里插入圖片描述

3.設(shè)置行列索引

# 創(chuàng)建一個符合正態(tài)分布的10個股票5天的漲跌幅數(shù)據(jù)
stock_change = np.random.normal(0, 1, (10, 5))
pd.DataFrame(stock_change)
#設(shè)置行列索引
stock = ["股票{}".format(i) for i in range(10)]
date = pd.date_range(start="20200101", periods=5, freq="B")#這個是pandas中設(shè)置日期的
# 添加行列索引
data = pd.DataFrame(stock_change, index=stock, columns=date)
print(data)

在這里插入圖片描述

4.修改索引

#不能單獨修改行列總某一個索引的值,可以替換整行或整列   例:b.index[2]='股票1'  錯誤
data.index=新行索引
#重設(shè)索引
data.reset_index(drop=False)
#drop參數(shù)默認為False,表示將原來的索引替換掉,換新索引為數(shù)字遞增,原來的索引將變?yōu)閿?shù)據(jù)的一部分。True表示,將原來的索引刪除,更換為數(shù)字遞增。如下圖

在這里插入圖片描述

# 設(shè)置新索引
df = pd.DataFrame({'month': [1, 4, 7, 10],
                    'year': [2012, 2014, 2013, 2014],
                    'sale':[55, 40, 84, 31]})
# 以月份設(shè)置新的索引
df.set_index("month", drop=True)
#見下圖,即將原本數(shù)據(jù)中的一列拿出來作為index
new_df = df.set_index(["year", "month"])# 設(shè)置多個索引,以年和月份   多個索引其實就是MultiIndex

在這里插入圖片描述

可以看到下面的new_df已經(jīng)是multiIndex類型數(shù)據(jù)了。

有三級: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維數(shù)組的Panel結(jié)構(gòu)

  • items - axis 0,每個項目對應于內(nèi)部包含的數(shù)據(jù)幀(DataFrame)。
  • major_axis - axis 1,它是每個數(shù)據(jù)幀(DataFrame)的索引(行)。
  • minor_axis - axis 2,它是每個數(shù)據(jù)幀(DataFrame)的列。
items - axis 0,每個項目對應于內(nèi)部包含的數(shù)據(jù)幀(DataFrame)。
major_axis - axis 1,它是每個數(shù)據(jù)幀(DataFrame)的索引(行)。
minor_axis - axis 2,它是每個數(shù)據(jù)幀(DataFrame)的列。

在這里插入圖片描述

Pandas從版本0.20.0開始棄用,推薦的用于表示3D數(shù)據(jù)的方法是DataFrame上的MultiIndex方法

1.4 Series

帶索引的一維數(shù)組

  • index
  • values
# 創(chuàng)建
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 基本數(shù)據(jù)操作

2.1 索引操作

data=pd.read_csv("./stock_day/stock_day.csv")#讀入文件的前5行表示如下
######利用drop刪除某些行列,需要利用axis告知函數(shù)是行索引還是列索引
data=data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"], axis=1) # 去掉一些不要的列
data["open"]["2018-02-26"] # 直接索引,但需要遵循先列后行
#####按名字索引利用.loc函數(shù)可以不遵循列行先后關(guān)系
data.loc["2018-02-26"]["open"] # 按名字索引
data.loc["2018-02-26", "open"]
#####利用.iloc函數(shù)可以只利用數(shù)字進行索引
data.iloc[1][0] # 數(shù)字索引
data.iloc[1,0]
# 組合索引
# 獲取行第1天到第4天,['open', 'close', 'high', 'low']這個四個指標的結(jié)果
data.ix[:4, ['open', 'close', 'high', 'low']] # 現(xiàn)在不推薦用了
###但仍可利用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 (比較行索引進行排序,不行可以先轉(zhuǎn)置簡介對列排序)

data.sort_values(by="high", ascending=False) # DataFrame內(nèi)容排序,ascending表示升序還是降序,默認True升序

data.sort_values(by=["high", "p_change"], ascending=False).head() # 多個列內(nèi)容排序。給出的優(yōu)先級進行排序

data.sort_index(ascending=True)###對行索引進行排序

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

2.4 數(shù)學運算

布爾值索引

算術(shù)運算:直接利用運算符或者函數(shù)

#正常的加減乘除等的運算即可
data["open"] + 3
data["open"].add(3) # open統(tǒng)一加3  
data.sub(100)# 所有統(tǒng)一減100 data - 100
(data["close"]-(data["open"])).head() # close減open

邏輯運算 :< ; > ; | ; & 利用邏輯符號或者函數(shù)query

# 例如篩選p_change > 2的日期數(shù)據(jù)
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])##如下圖

利用布爾值索引,即利用一個布爾數(shù)組索引出True的數(shù)據(jù)

###判斷# 判斷'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
###布爾值索引是一個很方便的數(shù)據(jù)篩選操作,比如:
data[data["turnover"]>0.1]
#也將篩選出turnover列中大于0.1的整體data數(shù)據(jù),并不是說只返回turnover相關(guān)數(shù)據(jù),判斷只是返回布爾索引,利用索引的是data數(shù)據(jù)

2.5 統(tǒng)計運算

data.describe()
#將返回關(guān)于列的最值,均值,方差等多種信息
##其實這里很多就和numpy相似了
data.max(axis=0)#返回最值
data.idxmax(axis=0) #返回最值索引

累計統(tǒng)計函數(shù)(累加,累乘等)

  • cumsum 計算前1/2/3/…/n個數(shù)的和
  • cummax 計算前1/2/3/…/n個數(shù)的最大值
  • cummin 計算前1/2/3/…/n個數(shù)的最小值
  • cumprod 計算前1/2/3/…/n個數(shù)的積

自定義運算

apply(func, axis=0)

func: 自定義函數(shù)

axis=0: 默認按列運算,axis=1按行運算

data.apply(lambda x: x.max() - x.min())
#這里的lambda x: x.max() - x.min()是lambda表達式,是函數(shù)的簡單寫法也可
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列數(shù)據(jù)

data[:10].to_csv("test.csv", columns=["open"], index=False, mode="a", header=False) # 保存opend列數(shù)據(jù),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文件當中讀取數(shù)據(jù)

  • 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格式轉(zhuǎn)換成默認的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’,指定轉(zhuǎn)換成的對象類型series或者dataframe
sa = pd.read_json("Sarcasm_Headlines_Dataset.json", orient="records", lines=True)
##主要是path,orient是一種確定索引與數(shù)值的對應,以本例來看,列索引就是‘key',values就是key對應的值
sa.to_json("test.json", orient="records", lines=True)

本示例中按行存儲,每行是一個字典,鍵 有’article_link’,'headline’等

5 高級處理

5.1 缺失值(標記值)處理

主要參數(shù)

  • inplace實現(xiàn)數(shù)據(jù)替換(默認為False)
  • dropna實現(xiàn)缺失值的刪除(默認刪除行)
  • fillna實現(xiàn)缺失值的填充
  • isnull或notnull判斷是否有缺失數(shù)據(jù)NaN

如何進行缺失值處理?

  • 刪除含有缺失值的樣本
  • 替換/插補數(shù)據(jù)

判斷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數(shù)據(jù)

  • df.dropna(inplace=True) 默認按行刪除 inplace:True修改原數(shù)據(jù),F(xiàn)alse返回新數(shù)據(jù),默認False

替換nan數(shù)據(jù)

  • df.fillna(value,inplace=True)
  • value替換的值
  • inplace:True修改原數(shù)據(jù),F(xiàn)alse返回新數(shù)據(jù),默認False
movie["Revenue (Millions)"].fillna(movie["Revenue (Millions)"].mean(), inplace=True)
###這就是先利用其他代碼判斷出"Revenue (Millions)"有nan數(shù)據(jù),然后利用.fillna函數(shù),令value=movie["Revenue (Millions)"].mean()列的均值,然后inplace=True修改原數(shù)據(jù)
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,說明數(shù)據(jù)中存在缺失值
np.all(pd.notnull(movie)) # 返回False,說明數(shù)據(jù)中存在缺失值
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的標記數(shù)據(jù)

有些數(shù)據(jù)不存在可能標記為“#”,“?”等

# 讀取數(shù)據(jù)
path = "wisconsin.data"
name = ["Sample code number",  "Normal Nucleoli","Mitoses", "Class"]
data = pd.read_csv(path, names=name)

#這里的非nan標記值缺失值就是利用“?”表示的,因此利用參數(shù)to_replace,value=np.nan,將默認標記值替換為nan值,然后再利用簽署方法處理nan缺失值
# 1)替換
data_new = data.replace(to_replace="?", value=np.nan)

5.2 離散化

這一塊建議去看視頻,理解更快:視頻地址

  • 連續(xù)屬性的離散化就是將連續(xù)屬性的值域上,將值域劃分為若干個離散的區(qū)間,最后用不同的符號或整數(shù) 值代表落在每個子區(qū)間的屬性值。
  • 連續(xù)屬性離散化的目的是為了簡化數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)離散化技術(shù)可以用來減少給定連續(xù)屬性值的個數(shù)。離散化方法經(jīng)常作為數(shù)據(jù)挖掘的工具。
  • 實現(xiàn)方法:

1.分組

  • 自動分組 sr = pd.qcut(data, bins)
  • 自定義分組 sr = pd.cut(data, [])

2.將分組好的結(jié)果轉(zhuǎn)換成one-hot編碼(啞變量)

  • pd.get_dummies(sr, prefix=)

one-hot編碼:
one-hot

比如男女數(shù)據(jù)一般用1和0表示,但1和0本身有大小問題,而男女只是不同的概念,因此用1,0表示會存在區(qū)別

(男:1 女:0)性別
小明1
小紅0

如果用one-hot表示一種方法可以是,相當于利用一種編碼的方式表示

編碼
小明101 0
小紅010 1

同時還可處理連續(xù)數(shù)據(jù),比如將身高的連續(xù)數(shù)據(jù)分為不同的身高區(qū)間,每個區(qū)間對應一個類別,然后類比同上來考慮

# 1)準備數(shù)據(jù)
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()  # 看每一組有幾個數(shù)據(jù)
# 3)轉(zhuǎn)換成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上的內(nèi)容數(shù)據(jù)

按方向

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

按索引

merge函數(shù)參數(shù)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參數(shù)解釋:
#left: 需要合并的一個表,合并后在左側(cè)
#right:需要合并的一個表,合并后在右側(cè)
#how: 合并方式
#on: 在哪些索引上進行合并

5.4交叉表與透視表

交叉表

  • 交叉表用于計算一列數(shù)據(jù)對于另外一列數(shù)據(jù)的分組個數(shù)(尋找兩個列之間的關(guān)系)
  • 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 分組與聚合

  • 分組與聚合通常是分析數(shù)據(jù)的一種方式,通常與一些統(tǒng)計函數(shù)一起使用,查看數(shù)據(jù)的分組情況。
  • DataFrame.groupby(key, as_index=False) key:分組的列數(shù)據(jù),可以多個
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. 想知道這些電影數(shù)據(jù)中評分的平均分,導演的人數(shù)等信息,我們應該怎么獲取?
  2. 對于這一組電影數(shù)據(jù),如果我們想看Rating,Runtime(Minutes)的分布情況,應該如何呈現(xiàn)數(shù)據(jù)?
  3. 對于這一組電影數(shù)據(jù),如果我們希望統(tǒng)計電影分類(genre)的情況,應該如何

處理數(shù)據(jù)?

數(shù)據(jù)結(jié)構(gòu)展示

數(shù)據(jù)網(wǎng)址

在這里插入圖片描述

代碼

# 1、準備數(shù)據(jù)
movie = pd.read_csv("./IMDB/IMDB-Movie-Data.csv")
###movie讀入后如上圖所示
######################問題一
# 問題1:我們想知道這些電影數(shù)據(jù)中評分的平均分,導演的人數(shù)等信息,我們應該怎么獲取?
# 評分的平均分
movie["Rating"].mean()
# 導演的人數(shù)
np.unique(movie["Director"]).size

######################問題二
##繪制直方圖查看分布
movie["Rating"].plot(kind="hist", figsize=(20, 8))
#利用matplotlib可更細致繪圖
import matplotlib.pyplot as plt
# 1、創(chuàng)建畫布
plt.figure(figsize=(20, 8), dpi=80)
# 2、繪制直方圖
plt.hist(movie["Rating"], 20)
# 修改刻度
plt.xticks(np.linspace(movie["Rating"].min(),movie["Rating"].max(), 21))
# 添加網(wǎng)格
plt.grid(linestyle="--", alpha=0.5)
# 3、顯示圖像
plt.show()


######################問題三
##如果我們希望統(tǒng)計電影分類(genre)的情況,應該如何處理數(shù)據(jù)?
###可以發(fā)現(xiàn)圖中g(shù)enre一列數(shù)據(jù)中每個電影都有多種標簽,因此要先分割
# 先統(tǒng)計電影類別都有哪些
movie_genre = [i.split(",") for i in movie["Genre"]]
###得到的movie_genre結(jié)構(gòu)圖見《下圖一》
###這一塊主要是把movie_genre的二維列表變?yōu)橐詾榱斜?,然后利用unique函數(shù)去重
movie_class = np.unique([j for i in  movie_genre for j in i])
len(movie_class)####這就得到了電影的類型標簽種類數(shù)

# 統(tǒng)計每個類別有幾個電影
count = pd.DataFrame(np.zeros(shape=[1000, 20], dtype="int32"), columns=movie_class)
count.head()###得到的count結(jié)構(gòu)如《下圖二》
# 計數(shù)填表
for i in range(1000):
    count.ix[i, movie_genre[i]] = 1###注意ix現(xiàn)在不太能用了
    ############movie_genre[i]將返回字符索引列
#這就得到了下面第三張圖片的數(shù)據(jù)處理效果,列表示電影類型種類,行表示不同電影,如《下圖三》
#因此只需逐列求和即可得到每類標簽電影的數(shù)量
##最終實現(xiàn)數(shù)據(jù)可視化如《下圖四》
count.sum(axis=0).sort_values(ascending=False).plot(kind="bar", figsize=(20, 9), fontsize=40, colormap="cool")

到此這篇關(guān)于Python數(shù)據(jù)挖掘Pandas的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)挖掘Pandas內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論