久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

 網(wǎng)摘文苑 2023-03-19 發(fā)布于新疆

一,、Pandas認(rèn)識(shí)

pandas主要是用來(lái)進(jìn)行數(shù)據(jù)處理/數(shù)據(jù)分析的第三方庫(kù),其中不僅包含了數(shù)據(jù)處理,、甚至還有統(tǒng)計(jì)分析等相關(guān)計(jì)算,,其內(nèi)部封裝了numpy的相關(guān)組件。

pandas的主要數(shù)據(jù)類型有:

  • series(一維結(jié)構(gòu))
  • dataframe(二維結(jié)構(gòu))
  • pannel(三維結(jié)構(gòu))

二,、創(chuàng)建DataFrame和Series

1,、加載數(shù)據(jù)

import numpy as np# 加載數(shù)據(jù)res = np.load('某數(shù)據(jù).npz')columns = res['columns']values = res['values']print('columns:\n',columns)print('values:\n',values)

2、數(shù)組轉(zhuǎn)化為df結(jié)構(gòu)

將數(shù)組轉(zhuǎn)化成 我們想要的 比較好看的行列結(jié)構(gòu)

# df 相對(duì)于數(shù)組,,多了行索引,,列索引index = ['index_' + str(i) for i in np.arange(69)]df = pd.DataFrame(values, columns=columns, index=index)print(df)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3、將df轉(zhuǎn)化為Series結(jié)構(gòu)(取df某一列)

如何將df轉(zhuǎn)化為Series,,由于Series只有行索引,,沒有列索引,所以Series只是DataFrame取一列的特殊情況

ser = df['序號(hào)']print(ser)print(type(ser))
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

根據(jù)行索引或行索引名稱取出series中的行數(shù)據(jù)

ser = df['時(shí)間'][['index_0', 'index_1', 'index_3']]# ser = df['時(shí)間'][[0,1,2,3,4]]print(ser)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

4,、使用字典生成一個(gè)df數(shù)據(jù)

d = {'col1':[0,1,2],'col2':[1,2,3],'col3':[3,4,5]}df = pd.DataFrame(data=d,index=['a','b','c'])print(df)print(type(df))
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

拿取多列數(shù)據(jù),,可以發(fā)現(xiàn),數(shù)據(jù)類型還是df并不是series(series只能是拿取df的一列數(shù)據(jù))

# 取多列res = df[['col1','col2']]print(res)print(type(res))
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

5,、使用series方法自己生成一個(gè)series數(shù)據(jù)

ser = pd.Series([1,2,3],index=['a','b','c'])print(ser)print(type(ser))
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

三,、DataFrame的屬性

1、手動(dòng)創(chuàng)建一個(gè)df數(shù)據(jù)(每一列數(shù)據(jù)類型一致)

import pandas as pd# 創(chuàng)建dfdf = pd.DataFrame(    {        'col1': [0,1,2],        'col2': ['zs','ls','ww'],        'col3': [1.2,3.14,5.20],        'col4': [1,1,0]    },    index = ['index0','index1','index2'])print(df)print(type(df))
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2,、df的values屬性(可用于數(shù)組和dataframe數(shù)據(jù)轉(zhuǎn)化)

# df的值,,獲取df數(shù)組print('df 的values:\n',df.values)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、獲取df行索引名稱

# 獲取行索引名稱print('df 的index:\n',df.index)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

4,、獲取df列索引名稱

# 獲取列索引名稱print('df 的columns:\n',df.columns)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

5、獲取df元素個(gè)數(shù)

# 獲取元素個(gè)數(shù)print('df 的size:\n',df.size)

6,、獲取df每一列的數(shù)據(jù)類型

# 獲取數(shù)據(jù)類型print('df 的dtypes:\n',df.dtypes)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

7,、獲取df的形狀

# 獲取形狀print('df 的shape:\n',df.shape)

8,、獲取df維度

# 獲取維度print('df 的ndim:\n',df.ndim)

四、Pandas數(shù)據(jù)存儲(chǔ)與讀取

1,、加載文本數(shù)據(jù)(table方式)

# table 默認(rèn)\t分隔info = pd.read_table('xxxx.csv',encoding='ansi',sep=',')print(info)

2,、加載文本數(shù)據(jù)(csv方式)

info = pd.read_csv('xxxx.csv',encoding='ansi',usecols=['phone','name'])print(info)參數(shù): header=infer 自動(dòng)識(shí)別列名 自動(dòng)認(rèn)為第一行為列名 names 設(shè)置列名 接收array 默認(rèn)為None index_col 設(shè)置行索引 如[0,1]是將第0列,第1列作為行索引 nrows 讀取的時(shí)候讀取前n行 usecols 指定讀取的列 ['info_id','use_id']
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、excel文件讀取

info = pd.read_excel('xxxx.xlsx')print(info)參數(shù):無(wú)數(shù)據(jù)以NaN填充   sheetname 默認(rèn)為00個(gè)工作表   header 以哪一行作為列名,,默認(rèn)以第0行作為列名   index_col 設(shè)置列索引 設(shè)置一個(gè)列或多個(gè)列作為行索引   names 設(shè)置列名 接收array 默認(rèn)為None   parse_cols 讀取某些列 ,parse_cols=['info_id']
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

4、保存數(shù)據(jù)(對(duì)象為df)

有多種方式,,這里只演示df.to_excel及pd.to_csv

info = pd.to_excel('xxx.xlsx',columns=['detail_id','order_id'],index_label='index_id')print(info)參數(shù): columns 指定需要保存的列 header 保存列索引 index 保存行索引 index_label 給保存好的excel文件的行索引起個(gè)名稱
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

五,、df數(shù)據(jù)索引取值

1、加載數(shù)據(jù)

detail = pd.read_excel('xxx_detail.xlsx')

2,、普通索引獲取單列數(shù)據(jù)

pandas獲取數(shù)據(jù),,都是先獲取列,再獲取行(非同時(shí)索引)

數(shù)組是同時(shí)索引(arr[行,,列])

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

獲取單列 之后在獲取行數(shù)據(jù),;
如果是單行,單行的名稱或者下標(biāo),,也可以是名稱列表,;
如果是多行,多行的名稱列表或者下標(biāo)列表

3,、普通索引獲取多列數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

獲取多列 之后在獲取行
如果是單行,,直接寫名稱
如果是多行,需要將多列的名稱組成一個(gè)列表

4,、loc iloc索引方式(同時(shí)索引)

使用方法:detail.loc[行名稱,,列名稱] or detail.iloc[行下標(biāo),列下標(biāo)]

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

5,、混合索引(ix)

ix 混合索引,,既可以使用名稱也可以使用下標(biāo),索引方式同一維度(只能混合,,不能混搭)

從效率上講,,ix最慢 如果數(shù)據(jù)過(guò)大不推薦使用

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

六、df的修改操作

1,、加載數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2,、定位sex=男的這一列數(shù)據(jù),返回bool數(shù)組

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、獲取到所有sex=男的所有數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

4,、重新對(duì)獲取到的這些數(shù)據(jù)進(jìn)行賦值

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

5、不加條件的修改(針對(duì)所有數(shù)據(jù))

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

簡(jiǎn)單修改數(shù)據(jù):

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

七、df的增加操作

1,、加載數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2,、增加一個(gè)列,并添加數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

八,、df的刪除操作

drop 只能用行或列名稱刪除,,不能用下標(biāo)
參數(shù):
labels 列名或行名
inplace=True 對(duì)原df產(chǎn)生影響,返回一個(gè)None
inplace=False 對(duì)原df不產(chǎn)生影響,,返回一個(gè)刪除之后的結(jié)果

1,、加載數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2、刪除列

labels 指定列名,,設(shè)置axis=1

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、刪除行

labels 指定行名,設(shè)置axis=0(默認(rèn))

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

示例:

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

九,、Pandas的統(tǒng)計(jì)分析

1,、讀取數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2、統(tǒng)計(jì)函數(shù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、pandas對(duì)于非數(shù)值型數(shù)據(jù)的統(tǒng)計(jì)分析

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

示例1:在detail中哪些菜品最火,?菜品賣出了多少份?

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

白飯不算菜,,---把白飯刪除,,在統(tǒng)計(jì)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

示例2:在detail中哪個(gè)訂單點(diǎn)的菜最多,點(diǎn)了多少份菜,?

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

十,、Pandas時(shí)間數(shù)據(jù)

datetime64[ns]---numpy 里面的時(shí)間點(diǎn)類型
Timestamp ---pandas 默認(rèn)的時(shí)間點(diǎn)類型--封裝了datetime64[ns]
DatetimeIndex ---pandas 默認(rèn)支持的時(shí)間序列結(jié)構(gòu)

1、通過(guò)pd.to_datetime 將時(shí)間點(diǎn)數(shù)據(jù)轉(zhuǎn)化為pandas默認(rèn)支持的時(shí)間點(diǎn)數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2,、通過(guò)pd.to_datetime 或者 pd.DatetimeIndex將時(shí)間序列轉(zhuǎn)化為pandas默認(rèn)支持的時(shí)間序列結(jié)構(gòu)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

示例:

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

獲取該時(shí)間序列的屬性---可以通過(guò)列表推導(dǎo)式來(lái)獲取時(shí)間點(diǎn)的屬性

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、時(shí)間的相加減

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

4、時(shí)間差距計(jì)算

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

5,、獲取本機(jī)可以使用的初始時(shí)間和最后可以使用的時(shí)間節(jié)點(diǎn)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

十一,、Pandas的分組聚合

1、讀取數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2,、根據(jù)班級(jí)分組,,統(tǒng)計(jì)學(xué)生的平均年齡

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3、先按照班級(jí)分組,,在按照地址進(jìn)行分組,,求平均年齡

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

4、按照單列進(jìn)行分組,,統(tǒng)計(jì)多個(gè)列的指標(biāo)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

5,、利用agg,,同時(shí)對(duì)age求平均值,對(duì)USRE_ID求最大值

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

6,、同時(shí)對(duì)age和USER_ID同時(shí)分別求和及均值

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

7,、對(duì)age USER_ID 求取不同個(gè)數(shù)的統(tǒng)計(jì)指標(biāo)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

8,、自定義函數(shù)進(jìn)行計(jì)算

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

9,、銷售額計(jì)算(以每日分組計(jì)算每天的銷售額)

import pandas as pd# detail 有時(shí)間數(shù)據(jù)detail = pd.read_excel('meal_order_detail.xlsx')print('detail:\n',detail)print('detail的列索引名稱:\n',detail.columns)print('detail的形狀:\n',detail.shape)print('detail的列數(shù)據(jù)類型:\n',detail.dtypes)# 計(jì)算每個(gè)彩品的銷售額,增加到detail中detail.loc[:,'pay'] = detail.loc[:,'counts'] * detail.loc[:,'amounts']print(detail)# 獲取時(shí)間點(diǎn)的日屬性# 必須pandas默認(rèn)支持的時(shí)間序列類型detail.loc[:,'place_order_time'] = pd.to_datetime(detail.loc[:,'place_order_time'])# 以列表推導(dǎo)式獲取日屬性detail.loc[:,'day'] = [i.day for i in detail.loc[:,'place_order_time']]print(detail)# 以日分組res = detail.groupby(by='day')['pay'].sum()print(res)

十二,、Pandas透視表與交叉表

1,、加載數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2、透視表創(chuàng)建

透視表 是一種plus版的分組聚合 創(chuàng)建一個(gè)透視表參數(shù): data dataframe數(shù)據(jù) values 最終統(tǒng)計(jì)指標(biāo)所針對(duì)對(duì)象,,要關(guān)心的數(shù)據(jù)主體 index 按照index進(jìn)行 行分組 columns 按照columns進(jìn)行 列分組 aggfunc 對(duì)主體 進(jìn)行什么指標(biāo)的統(tǒng)計(jì)res = pd.pivot_table(data=detail[['amounts','order_id','counts']],values='amounts',index='order_id',columns='counts',aggfunc='mean')# res = pd.pivot_table(data=detail[['amounts','order_id','counts','dishes_name','day']],values='amounts',index=['order_id','dishes_name'],columns=['counts','day'],aggfunc='mean')print(res)res.to_excel('hh.xlsx')
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、交叉表 mini版的透視表

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

十三、Pandas數(shù)據(jù)去重與相關(guān)性衡量

1,、加載數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2,、對(duì)指定數(shù)據(jù)去重

參數(shù): subset---指定要去重的數(shù)據(jù) 只有同列才能進(jìn)行去重
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3、數(shù)據(jù)相關(guān)性衡量

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

十四,、DataFrame數(shù)據(jù)拼接

1,、加載數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2、concat方式基于行方向連接

outer 代表外鏈接 在行的方向上,,直接拼接,;列的方向上求列的并集

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

inner 代表內(nèi)鏈接 在行的方向上,直接拼接,;列的方向上求列的交集

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、concat方式基于列方向連接

outer 代表外鏈接 在列的方向上,直接拼接,;行的方向上求行的并集

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

inner 代表內(nèi)鏈接 在列的方向上,,直接拼接;行的方向上求行的交集

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

4,、merge方式連接

outer 外連接,key值的列,,求并集,沒有值的 用NaN填充

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

inner 內(nèi)連接,,,key值的列,,求交集,沒有值的 用NaN填充

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

left 左外連接,,,key值的列,,以左表為主

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

right 右外連接,,key值的列,,以右表為主

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

左表的列的名稱與右表的列的名稱 不一樣 但里面的數(shù)據(jù)是一樣的

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

十五,、DataFrame數(shù)據(jù)填充

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

十六,、缺失值處理

1、缺失值檢測(cè)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2,、刪除法處理缺失值

對(duì)于刪除法,,容易改變數(shù)據(jù)結(jié)構(gòu),容易造成大量數(shù)據(jù)丟失,;
只有行或列大部分為缺失值,,我們才進(jìn)行刪除
或者 行、列的數(shù)據(jù)對(duì)結(jié)果不重要 才進(jìn)行刪除

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

3,、填充法處理缺失值

對(duì)于數(shù)值型數(shù)據(jù)---可以使用均值,、中位數(shù)、眾數(shù)來(lái)填充
對(duì)于類別型數(shù)據(jù)---可以使用眾數(shù)來(lái)填充

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

4,、插值法處理缺失值

對(duì)于線性關(guān)系的數(shù)據(jù)---線性插值比較準(zhǔn)確,,多項(xiàng)式插值和樣條插值都不錯(cuò)
如果是線性關(guān)系的數(shù)據(jù)---都可以使用

對(duì)于非線性數(shù)據(jù)---線性插值效果較差,多項(xiàng)式插值和樣條插值效果較好
如果是非線性關(guān)系的數(shù)據(jù)---推薦使用多項(xiàng)式插值或樣條插值

線性插值:

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

多項(xiàng)式插值:

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

樣條插值:

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

十七,、異常值處理

import pandas as pd# 根據(jù)正態(tài)分布得出 99.73%的數(shù)據(jù)都在[u-3sigma,u+sigma]之間,,那么我們認(rèn)為超出這個(gè)區(qū)間的數(shù)據(jù)為異常值# [μ-3σ]# 剔除異常值---保留數(shù)據(jù)在[u-3sigma,u+3sigma]def three_sigma(data):    '''    進(jìn)行3 sigma異常值剔除    :param data: 傳入的數(shù)據(jù)    :return: 剔除之后的數(shù)據(jù),或者剔除異常值之后的行索引名稱    '''    # bool_num = ((data.mean() - 3 * data.std()) <= data) and ((data.mean() + 3 * data.std()) >= data)    bool_id_1 = ((data.mean() - 3 * data.std()) <= data)    bool_id_2 = ((data.mean() + 3 * data.std()) >= data)    # 位與運(yùn)算    bool_num = bool_id_1 & bool_id_2    # return data.loc[bool_num,:]    return bool_num# 以detail為例 展示以amounts進(jìn)行異常值剔除,,查看detail結(jié)果# 加載數(shù)據(jù)detail = pd.read_excel('meal_order_detail.xlsx',sheetname=0)print('detail:\n',detail)print('detail的列名:\n',detail.columns)# 調(diào)用函數(shù)進(jìn)行detail中amounts的異常值剔除# detail = three_sigma(detail)bool_num = three_sigma(detail.loc[:,'amounts'])# 獲取正常的detaildetail = detail.loc[bool_num,:]print(detail.shape)

箱線圖異常處理:

import pandas as pdimport numpy as np# 箱線圖分析arr = pd.DataFrame(np.array([1,2,3,4,5,6,7,8,9,100]))print(arr.quantile(0.1))# 75% 的數(shù) qu# 25% 的數(shù) ql# iqr = qu - ql# 上限:qu + 1.5 * iqr# 下限:ql - 1.5 * iqrdef box_analysis(data): ''' 進(jìn)行箱線圖分析,,剔除異常值 :param data: series :return: bool數(shù)組 ''' qu = data.quantile(0.75) ql = data.quantile(0.25) iqr = qu - ql # 上限 up = qu + 1.5 * iqr # 下限 low = ql - 1.5 * iqr # 進(jìn)行比較運(yùn)算 bool_id_1 = data <= up bool_id_2 = data >= low bool_num = bool_id_1 & bool_id_2 return bool_num# 加載數(shù)據(jù)detail = pd.read_excel('meal_order_detail.xlsx',sheetname=0)bool_num = box_analysis(detail.loc[:,'amounts'])detail = detail.loc[bool_num,:]print(detail.shape)# quantile 參數(shù)為[0,1]的小數(shù)---返回分位數(shù),series類型# percentile 參數(shù)為[0,100]的整數(shù)---返回分位數(shù)的列表

十八,、標(biāo)準(zhǔn)化數(shù)據(jù)

標(biāo)準(zhǔn)化數(shù)據(jù)的目的:將數(shù)據(jù)轉(zhuǎn)化為同一量級(jí),,避免量級(jí)對(duì)結(jié)果產(chǎn)生不利的影響,消除量高影響

三種方式:

1,、離差標(biāo)準(zhǔn)化---(x - min)/(max - min)

將數(shù)據(jù)轉(zhuǎn)化為[0,1]之間去def min_max_sca(data):    '''    離差標(biāo)準(zhǔn)化    :param data:傳入的數(shù)據(jù)    :return: 標(biāo)準(zhǔn)化之后的數(shù)據(jù)    '''    data = (data - data.min()) / (data.max() - data.min())    return data# 離差標(biāo)準(zhǔn)化容易受到異常點(diǎn)影響

2,、標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化---(x - mean)/std

# 轉(zhuǎn)化完成的數(shù)據(jù)---將數(shù)據(jù)轉(zhuǎn)化到標(biāo)準(zhǔn)差為1,均值為0的一種狀態(tài)def stand_sca(data): ''' 標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化數(shù)據(jù) :param data: 傳入的數(shù)據(jù) :return: 標(biāo)準(zhǔn)化之后的數(shù)據(jù) ''' data = (data - data.mean()) / data.std() return data# 對(duì)異常值不敏感(出場(chǎng)率--使用比較高)

3,、小數(shù)定標(biāo)標(biāo)準(zhǔn)化---x/10^k

# k---k=log10(|x|.max())在向上取整# 通過(guò)移動(dòng)數(shù)據(jù)的小數(shù)點(diǎn)來(lái)使得數(shù)據(jù)轉(zhuǎn)化到[-1,1]之間import numpy as npdef desc_sca(data):    '''    小數(shù)定標(biāo)標(biāo)準(zhǔn)化    :param data:傳入的數(shù)據(jù)    :return: 標(biāo)準(zhǔn)化之后的數(shù)據(jù)    '''    data = data / (10 ** np.ceil(np.log10(data.abs().max())))    return data

4,、三種標(biāo)準(zhǔn)化數(shù)據(jù)函數(shù)應(yīng)用

# 加載數(shù)據(jù)detail = pd.read_excel('meal_order_detail.xlsx')# print(detail)print(detail.loc[:,'amounts'].max())print(detail.loc[:,'amounts'].min())# 標(biāo)準(zhǔn)化數(shù)據(jù)# 離差標(biāo)準(zhǔn)化(基本不用)res = min_max_sca(detail.loc[:,'amounts'])# 標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化res = stand_sca(detail.loc[:,'amounts'])# 小數(shù)定標(biāo)標(biāo)準(zhǔn)化res = desc_sca(detail.loc[:,'amounts'])print(res)

十九、數(shù)據(jù)離散化

1,、將類別型數(shù)據(jù) 轉(zhuǎn)化為 啞變量矩陣

數(shù)據(jù)分析模型中有相當(dāng)一部分的算法模型都要求輸入的特征為數(shù)值型,,但實(shí)際數(shù)據(jù)中特征的類型不一定只有數(shù)值型,還會(huì)存在相當(dāng)一部分的類別型,,這部分的特征需要經(jīng)過(guò)啞變量處理才可以放入模型之中,。

類別型數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)值數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

2、將連續(xù)型數(shù)據(jù)進(jìn)行離散化---進(jìn)行分組,,將具體的值轉(zhuǎn)化為區(qū)間數(shù)據(jù)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

等寬分組(可以發(fā)現(xiàn)等寬分組時(shí)分布不均)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

等頻分組(等頻分組數(shù)據(jù)分組比較均勻)

Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

將連續(xù)型數(shù)據(jù)再次轉(zhuǎn)化為啞變量矩陣

# # 將連續(xù)型數(shù)據(jù)轉(zhuǎn)為啞變量print(pd.get_dummies(res,prefix='區(qū)間',prefix_sep=':'))
Python數(shù)據(jù)分析之Pandas學(xué)習(xí)筆記(很全包含案例及數(shù)據(jù)截圖)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多