本文将使用Python来查看和可视化数据,比如绘制散点图。
数据导入和查看
导入将要分析的WorldIndex数据。用pandas.read_csv()
读取数据,并用pandas.head()
查看数据的开头5行。可以看到数据有5列,分别是国家,所在洲,预期寿命,人均GDP和人口数量。可以初步判断,将要分析的是每个国家的人均GDP和预期寿命的关系。
import pandas as pd
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
df = pd.read_csv('WorldIndex.csv')
df.head()
为了更清楚的了解数据的整体情况,使用.info()
方法查看数据的整体信息。可以看到数据有164行5列,而且没有缺失值。
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 164 entries, 0 to 163
Data columns (total 5 columns):
Country 164 non-null object
Continent 164 non-null object
Life_expectancy 164 non-null float64
GDP_per_capita 164 non-null float64
Population 164 non-null int64
dtypes: float64(2), int64(1), object(2)
memory usage: 6.5+ KB
数据中的所在洲(Continent)是分类变量(categorical variable),可以使用.unique()
方法来对查看Continent中大洲的名称。除了南极洲之外,其他的6大洲都包括在数据中了。
df.Continent.unique()
array(['Africa', 'Asia', 'Europe', 'North America', 'Oceania',
'South America'], dtype=object)
接下来,可以使用DataFrame的.value_counts()
方法,来统计不同大洲中包含的国家数量。
df.Continent.value_counts()
Africa 48
Europe 41
Asia 36
North America 19
South America 11
Oceania 9
Name: Continent, dtype: int64
数据可视化
通过上面的分析,我们已经大致了解了WorldIndex数据的整体情况。为了让数据更直观,可以通过图形展现。
散点图
通过下面的散点图,可以看到预期寿命和人均GDP的关系:人均收入在2000美元以下时,预期寿命随收入增长而迅速增长;当人均收入高于20000美金时,收入增长而预期寿命基本没有变化。
df.plot(kind='scatter', x='GDP_per_capita', y='Life_expectancy')
为了进一步了解不同大洲的情况,可以使用布尔索引的方法获取6个大洲的数据,并通过散点图呈现。欧洲国家的人均GDP普遍较高,预期寿命普遍在70岁以上;非洲国家的人均GDP普遍较低,预期寿命普遍在75岁以下。
Africa = df[df.Continent == 'Africa']
Asia = df[df.Continent == 'Asia']
Europe = df[df.Continent == 'Europe']
NorthAmerica = df[df.Continent == 'North America']
Oceania = df[df.Continent == 'Oceania']
SouthAmerica = df[df.Continent == 'South America']
ax = Africa.plot(kind='scatter', x='GDP_per_capita', y='Life_expectancy', color='Red', label='Africa', figsize=(10,6))
Asia.plot(kind='scatter', x='GDP_per_capita', y='Life_expectancy', color='Yellow', ax=ax, label='Asia')
Europe.plot(kind='scatter', x='GDP_per_capita', y='Life_expectancy', color='Blue', ax=ax, label='Europe')
NorthAmerica.plot(kind='scatter', x='GDP_per_capita', y='Life_expectancy', color='Black', ax=ax, label='NorthAmerica')
Oceania.plot(kind='scatter', x='GDP_per_capita', y='Life_expectancy', color='Green', ax=ax, label='Oceania')
SouthAmerica.plot(kind='scatter', x='GDP_per_capita', y='Life_expectancy', color='Orange', ax=ax, label='SouthAmerica')
箱图
使用.describe()
方法来总结数据中的中位数、四分位数、最大值和最小值等,可以看到预期寿命最大是83.84岁,最小是48.87岁;人均GDP最大是101909.82美元,最小是303.68美元。全球的贫富差距和人口健康水平差距都很大,需要大家共同努力,逐渐减少这些不公平。
df.describe()
用箱图可以更直观的看到全球预期寿命的差距。
df.Life_expectancy.plot(kind='box')
按不同的大洲,分别绘制不同预期寿命的箱图,可以更直观的看出不同大洲居民的预期寿命情况。
df[['Life_expectancy', 'Continent']].boxplot(grid=False, by='Continent', figsize=(10,6))
网友评论