Python 042 Pandas資料處理

2021-10-22 13:54:00 字數 4311 閱讀 1496

** 和鯨社群 和鯨訓練營 第二期

第一期筆記見pandas基礎 | 實戰

import pandas as pd

import numpy as np

# 1.讀取本地excel資料

df = pd.read_excel(r"e:\pandas120.xlsx"

)# 2.檢視df資料前5行

df.head(

)'''

createtime education salary

0 2020-03-16 11:30:18 本科 20k-35k

1 2020-03-16 10:58:48 本科 20k-40k

2 2020-03-16 10:46:39 不限 20k-35k

3 2020-03-16 10:45:44 本科 13k-20k

4 2020-03-16 10:20:41 本科 10k-20k

'''# 3.將salary列資料轉換為最大值與最小值的平均值

df['salary'

]= df[

'salary'].

(lambda x:

(int

(str

(x).replace(

'k','')

.split(

'-')[0

])+int

(str

(x).replace(

'k','')

.split(

'-')[1

]))/

2*1000

)# 4.將資料根據學歷進行分組並計算平均薪資

df.groupby(

['education'])

['salary'

].mean(

).reset_index(

).sort_values(

'salary'

,ascending=

false

)# 5.將createtime列時間轉換為月-日

## 方法一

df['createtime'].

(lambda x:

str(x)[5

:10])

##方法二

df['createtime'].

(lambda x:

str(x.month)

+'-'

+str

(x.day)

)# 6.檢視索引、資料型別和記憶體資訊

df.info(

)# 7.檢視數值型列的匯**計

df.describe(

)# 8.新增一列根據salary將資料分為三組

## 資料分箱 pd.cut( x, bins, right=true, labels=none, retbins=false, precision=3, include_lowest=false, duplicates='raise', )

## bins 若填整數,則把x等分成幾份。right=true,預設包含最右側的數值。

## pd.cut用法詳見

bins =[0

,5000

,20000

,50000

]group_names =

['低'

,'中'

,'高'

]df[

'categories'

]= pd.cut(df[

'salary'

], bins, labels=group_names)

df# 9.按照salary列對資料降序排列

df.sort_values(

['salary'

],ascending=

false

)# 10.取出第33行資料

df.iloc[32]

# 11.計算salary列的中位數

df['salary'

].median(

)# 12.繪製薪資水平頻率分布直方圖

import matplotlib.pyplot as plt

from jupyterthemes import jtplot

%matplotlib inline

jtplot.style(theme=

'onedork'

)#選擇乙個繪圖主題

plt.hist(df[

'salary'])

# 13.繪製薪資水平密度曲線

##方法一

import seaborn as sns

sns.kdeplot(df[

'salary'

],shade=

true

)## 方法二

df['salary'

].plot(kind =

'kde'

,xlim=(0

,80000))

# 14. 刪除最後一列categories

## 方法一

df.drop(

['categories'

],axis=

1,inplace=

true

)## 方法二

del df[

'categories'

]# 15.將df的第一列與第二列合併為新的一列

df['tmp1'

]= df[

'education'

]+df[

'createtime'

]# 16.將education列與salary列合併為新的一列

## map():對series使用

df['tmp2'

]= df[

'education'

]+ df[

'salary'].

map(

str)

df# 17.計算salary最大值與最小值之差

df['salary'].

max(

)-df[

'salary'].

min(

)# 18.將第一行與最後一行拼接

## 方法一

pd.concat(

[df.loc[[0

]],df.loc[

[len

(df)-1

]]])

## 方法二

pd.concat(

[df[0:

1],df[-2

:-1]

])# 19.將第8行資料新增至末尾[7

]])# 20.檢視每列的資料型別

df.dtypes

# 21.將createtime列設定為索引

df.set_index(

'createtime'

)# 22.生成乙個和df長度相同的隨機數dataframe

df2= pd.dataframe(np.random.randint(1,

100,

len(df)))

# 23.將上一題生成的dataframe與df合併

df = pd.concat(

[df,df2]

, axis=1)

# 24.生成新的一列new為salary列減去之前生成隨機數列

df['new'

]= df[

'salary'

]- df[0]

# 25.檢查資料中是否含有任何缺失值

df.isnull(

).values.

any(

)# 26.將salary列型別轉換為浮點數

df['salary'

]= df[

'salary'].

map(

float

)# 27.計算salary大於10000的次數

df[df[

'salary'

]>

10000][

'salary'

].count(

)# 28.檢視每種學歷出現的次數

df.groupby(

['education'])

['education'

].count(

)# 29.檢視education列共有幾種學歷

df['education'

].value_counts(

)# 30.提取salary與new列的和大於60000的最後3行

df[df[

'salary'

]+df[

'new'

]>

60000

].tail(

3)

python 安裝pandas教程

python3 安裝pandas 如果使用python2需要安裝的話,可以用pip install pandas 如果使用python3需要安裝的話,可以用pip3 install pandas 會自動安裝依賴庫 呼叫包,看下是否安裝成功 python3 python 3.8 1 tags v3.8...

python資料科學 Pandas

學習筆記 pandas物件 資料的取值與選擇 pandas數值運算方法 缺失值的處理 層級索引 合併與連線資料集 累積與分組 pandas物件 pandas有三個基本資料結構 series dataframe和index 資料的取值與選擇 pandas數值運算方法 pandas是建立在numpy基礎...

Pandas學習 Python基礎

二 numpy基礎 三 練習 1 列表推導式語法 for i in 其中第乙個 為對映函式,輸入為i,第二個 表示迭代物件。2 列表表示式還可支援多層巢狀。3 實用的語法糖條件賦值,形式為value a if condition else b。l i 2 for i in range 7 列表生成表...