前期準(zhǔn)備
本章的十道題與前面的試題相連接,數(shù)據(jù)集用的同一個(gè)數(shù)據(jù)集一些操作也是基于上一個(gè)練習(xí)的
本次導(dǎo)包多導(dǎo)入了一個(gè)繪圖的包,在這里我們只是簡(jiǎn)單的應(yīng)用,后面會(huì)有詳細(xì)的講解用法
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
數(shù)據(jù)集沒有的可以私信我,也可以直接去我的資源里面找
df = pd.read_excel('data1.xlsx')
def fun(x):
a,b = x.split('-')
a = int(a.strip('k'))*1000
b = int(b.strip('k'))*1000
return int((a+b)/2)
df['salary'] = df['salary'].apply(fun)
bins = [0,5000,20000,50000]
group_names = ['底','中','高']
df['categories'] = pd.cut(df['salary'],bins,labels=group_names)
df
1. 計(jì)算salary列的中位數(shù)
中位數(shù)(Median)又稱中值,統(tǒng)計(jì)學(xué)中的專有名詞,是按順序排列的一組數(shù)據(jù)中居于中間位置的數(shù),代表一個(gè)樣本、種群或概率分布中的一個(gè)數(shù)值,其可將數(shù)值集合劃分為相等的上下兩部分。對(duì)于有限的數(shù)集,可以通過把所有觀察值高低排序后找出正中間的一個(gè)作為中位數(shù)。如果觀察值有偶數(shù)個(gè),通常取最中間的兩個(gè)數(shù)值的平均數(shù)作為中位數(shù)。
# 方式1
np.median(df['salary'])
# 方式2
df['salary'].median()
2. 繪制薪資水平頻率直方圖
這個(gè)默認(rèn)是分為10組,分別統(tǒng)計(jì)每組出現(xiàn)的次數(shù)
df.salary.plot(kind='hist')
# 改變分組數(shù)
df.salary.plot(kind='hist',bins=20)
3. 繪制薪資水平密度曲線
類似于頻率直方圖,只不過分組更小了,繪圖方式采用的是曲線
df.salary.plot(kind='kde',xlim=(0,70000))
4. 刪除最后一列categories
刪除指定列
# 方式一 會(huì)直接刪除原數(shù)據(jù)
del df['categories']
# 方式二 默認(rèn)不會(huì)刪除原數(shù)據(jù), 只有當(dāng)inplace=True 才刪除原數(shù)據(jù)
df.drop(columns=['categories'],inplace=True) # 方式二
5. 將df的第一列與第二列合并為新的一列
因?yàn)檫@里的createTime
列是時(shí)間序列,所以不能直接的合并,需要我們先將數(shù)據(jù)類型改變?yōu)?code>str
# 將df的第一列與第二列合并為新的一列
# 需要將時(shí)間類型的數(shù)據(jù)裝換成字符類型,使用的是`astype`類型
df['test'] = df['createTime'].astype('str')+ df['education']
df.head()
6. 將education列與salary列合并為新的一列
這個(gè)同第五題類似,都是合并兩個(gè)列,都需要改數(shù)據(jù)類型
7. 計(jì)算salary列最大值與最小值之差
找出最大值和最小值做差
# 方式1
df['salary'].max()-df['salary'].min()
# 方式2 使用numpy中的方法
np.ptp(df['salary'])
8. 將第一行和最后一行拼接到一個(gè)DataFrame中
主要就是取對(duì)應(yīng)行的操作和將不同的行合并起來
pd.concat([df[:1],df[-1:]])
另一種方式
取出數(shù)據(jù)然后將數(shù)據(jù)生成一個(gè)新的DataFrame
pd.DataFrame([df.iloc[0],df.iloc[-1]])
9. 將第8行數(shù)據(jù)添加到末尾
主要包括兩個(gè)步驟,取出數(shù)據(jù),添加數(shù)據(jù)
# 取出數(shù)據(jù)有兩種信息
df[7:8] # 使用切片操作
df.iloc[7] # 使用.iloc取值
# 將第8行數(shù)據(jù)添加到末尾
df.append(df.iloc[7])
10. 查看每列的數(shù)據(jù)類型
dtypes 是屬性,不用加括號(hào)
df.dtypes
# 也可以使用,但是展示的信息就比較多了
df.info()
本章我們學(xué)習(xí)了和合并列,添加新的行,刪除指定列以及使用matplot
lib繪制一些簡(jiǎn)單的圖形等功能,這些功能都是以后常用的,我在講解的時(shí)候也拓展了不同的解題方式,希望大家發(fā)展思路,多多嘗試。文章來源:http://www.zghlxwxcb.cn/news/detail-447588.html
期待大家的三連文章來源地址http://www.zghlxwxcb.cn/news/detail-447588.html
到了這里,關(guān)于數(shù)據(jù)分析 | Pandas 200道練習(xí)題,每日10道題,學(xué)完必成大神(4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!