大家好,在使用Pandas分析數(shù)據(jù)時(shí),會使用Pandas函數(shù)來過濾和轉(zhuǎn)換列,連接多個(gè)數(shù)據(jù)幀中的數(shù)據(jù)等操作。但是,生成圖表將數(shù)據(jù)在數(shù)據(jù)幀中可視化,通常比僅僅查看數(shù)字更有幫助。
Pandas具有幾個(gè)繪圖函數(shù),可以使用它們快速輕松地實(shí)現(xiàn)數(shù)據(jù)可視化,文中將介紹這些函數(shù)。
一、創(chuàng)建Pandas數(shù)據(jù)幀
首先創(chuàng)建一個(gè)用于分析的示例數(shù)據(jù)幀,將數(shù)據(jù)幀命名為df_employees
,其中包含員工記錄。我們將使用Faker和NumPy的隨機(jī)模塊來填充數(shù)據(jù)幀,生成200條記錄。
注意:如果開發(fā)環(huán)境中沒有安裝Faker,請使用pip安裝:pip install Faker
。
運(yùn)行以下代碼片段來創(chuàng)建df_employees
,并向其中填充記錄:
import?pandas?as?pd
from?faker?import?Faker
import?numpy?as?np
#?實(shí)例化Faker對象
fake?=?Faker()
Faker.seed(27)
#?為員工創(chuàng)建一個(gè)數(shù)據(jù)幀
num_employees?=?200
departments?=?['Engineering',?'Finance',?'HR',?'Marketing',?'Sales',?'IT']
years_with_company?=?np.random.randint(1,?10,?size=num_employees)
salary?=?40000?+?2000?*?years_with_company?*?np.random.randn()
employee_data?=?{
?'EmployeeID':?np.arange(1,?num_employees?+?1),
?'FirstName':?[fake.first_name()?for?_?in?range(num_employees)],
?'LastName':?[fake.last_name()?for?_?in?range(num_employees)],
?'Age':?np.random.randint(22,?60,?size=num_employees),
?'Department':?[fake.random_element(departments)?for?_?in?range(num_employees)],
?'Salary':?np.round(salary),
?'YearsWithCompany':?years_with_company
}
df_employees?=?pd.DataFrame(employee_data)
#?顯示數(shù)據(jù)幀的頭部
df_employees.head(10)
設(shè)置種子以便重現(xiàn)結(jié)果,所以每次運(yùn)行此代碼,都會得到相同的記錄。
以下是數(shù)據(jù)幀的前幾條記錄:
df_employees.head(10)的輸出結(jié)果
二、Pandas繪圖函數(shù)
1. 散點(diǎn)圖
散點(diǎn)圖通常用于了解數(shù)據(jù)集中任意兩個(gè)變量之間的關(guān)系。對于df_employees
數(shù)據(jù)幀,讓我們創(chuàng)建一個(gè)散點(diǎn)圖來可視化員工年齡和工資之間的關(guān)系。這將幫助大家了解員工年齡和工資之間是否存在一定的相關(guān)性。
要繪制散點(diǎn)圖,可以使用plot.scatter()
,如下所示:
#?散點(diǎn)圖:年齡與工資
df_employees.plot.scatter(x='Age',?y='Salary',?title='Scatter?Plot:?Age?vs?Salary',?xlabel='Age',?ylabel='Salary',?grid=True)
對于此示例數(shù)據(jù)幀,并未看到員工年齡和工資之間的任何相關(guān)性。
2. 折線圖
折線圖適用于識別連續(xù)變量(通常是時(shí)間或類似刻度)上的趨勢和模式。
在創(chuàng)建df_employees
數(shù)據(jù)幀時(shí),已經(jīng)定義了員工在公司工作年限與工資之間的線性關(guān)系,觀察一下顯示工作年限與平均工資變化的折線圖。
按工作年限分組找到平均工資,然后使用plot.line()
繪制折線圖:
#?折線圖:平均工資隨工作年限的變化趨勢
average_salary_by_experience?=?df_employees.groupby('YearsWithCompany')['Salary'].mean()
df_employees['AverageSalaryByExperience']?=?df_employees['YearsWithCompany'].map(average_salary_by_experience)
df_employees.plot.line(x='YearsWithCompany',?y='AverageSalaryByExperience',?marker='o',?linestyle='-',?title='Average?Salary?Trend?Over?Years?of?Experience',?xlabel='Years?With?Company',?ylabel='Average?Salary',?legend=False,?grid=True)
由于選擇使用員工在公司工作年限的線性關(guān)系來填充薪資字段,因此可以清晰地看到折線圖反映了這一點(diǎn)。
3. 直方圖
可以使用直方圖來可視化連續(xù)變量的分布情況,方法是將數(shù)值劃分成區(qū)間或分段,并顯示每個(gè)分段中的數(shù)據(jù)點(diǎn)數(shù)量。
使用plot.hist()
繪制直方圖來了解員工年齡的分布情況,如下所示:
#?直方圖:年齡分布
df_employees['Age'].plot.hist(title='Age?Distribution',?bins=15)
4. 箱形圖
箱形圖有助于了解變量的分布、擴(kuò)散情況,并用于識別異常值。創(chuàng)建一個(gè)箱形圖,比較不同部門間的工資分布情況,從而對組織部的工資分布情況進(jìn)行高層次的比較。
箱形圖還有助于確定薪資范圍以及每個(gè)部門的有用信息,如中位數(shù)薪資和潛在的異常值等。
在這里,使用根據(jù)“部門(Department)”分組的“薪資(Salary)”列來繪制箱形圖:
#?箱形圖:按部門分列的薪金分布情況
df_employees.boxplot(column='Salary',?by='Department',?grid=True,?vert=False)
從箱線圖中,可以看到某些部門的薪資分布比其他部門更廣泛。
5. 條形圖
如果想要了解變量在出現(xiàn)頻率方面的分布情況,可以使用條形圖。
使用plot.bar()
繪制一個(gè)條形圖來可視化員工數(shù)量:
#?條形圖:按部門的員工數(shù)量
df_employees['Department'].value_counts().plot.bar(title='Employee?Count?by?Department')
6. 面積圖
面積圖通常用于可視化在連續(xù)軸或分類軸上的累積分布變量。對于員工數(shù)據(jù)幀,可以繪制不同年齡組的累積薪資分布圖。為了將員工映射到基于年齡組的區(qū)間中,需要使用pd.cut()
。
然后通過“年齡組(AgeGroup)”對薪資進(jìn)行累積求和,為了得到面積圖,使用plot.area()
:
#?面積圖:不同年齡組的累積薪資分布
df_employees['AgeGroup']?=?pd.cut(df_employees['Age'],?bins=[20,?30,?40,?50,?60],?labels=['20-29',?'30-39',?'40-49',?'50-59'])
cumulative_salary_by_age_group?=?df_employees.groupby('AgeGroup')['Salary'].cumsum()
df_employees['CumulativeSalaryByAgeGroup']?=?cumulative_salary_by_age_group
df_employees.plot.area(x='AgeGroup',?y='CumulativeSalaryByAgeGroup',?title='Cumulative?Salary?Distribution?Over?Age?Groups',?xlabel='Age?Group',?ylabel='Cumulative?Salary',?legend=False,?grid=True)
7. 餅圖
餅圖有助于可視化各個(gè)部門在整體組織中的薪資分布比例。
對于我們的示例,創(chuàng)建一個(gè)餅圖來顯示組織中各個(gè)部門的薪資分布是很有意義的。
通過部門對員工的薪資進(jìn)行分組,然后使用plot.pie()
來繪制餅圖:
#?餅圖:按部門劃分的薪資分布
df_employees.groupby('Department')['Salary'].sum().plot.pie(title='Department-wise?Salary?Distribution',?autopct='%1.1f%%')
文章來源:http://www.zghlxwxcb.cn/news/detail-810586.html
三、總結(jié)
以上就是本文介紹的7個(gè)用于快速數(shù)據(jù)可視化的Pandas繪圖函數(shù),也可以嘗試使用matplotlib
和seaborn
生成更漂亮的圖表。對于快速數(shù)據(jù)可視化,上述這些函數(shù)非常方便,實(shí)現(xiàn)過程較為輕松。?文章來源地址http://www.zghlxwxcb.cn/news/detail-810586.html
到了這里,關(guān)于7個(gè)Pandas繪圖函數(shù)助力數(shù)據(jù)可視化的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!