Python是一种广泛使用的解释型、高级编程、通用型编程语言,目前已经成为数据科学领域使用最广泛的语言,拥有大量成熟的工具箱,其中Numpy、Pandas提供了高性能的数据分析方法,Matplotlib提供了数据可视化方法,Scikit-learn提供了常见的机器学习算法。
以下通过一个数据分析示例简单介绍Pandas库的使用。
备注:示例使用Anaconda配置Python,开发环境为jupyter notebook,开发语言为Python3。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
一、数据导入
首先导入工具箱,为书写方便设置别名,pandas的别名为pd,numpy的别名为np,matplotlib的别名为plt。
edu=pd.read_csv('educ_figdp_1_Data.csv',usecols={"TIME","GEO","Value"})
使用read_csv()方法读取文件并存储到edu中,注意未写明路径时需要将数据集放在同一个目录下,参数usecols选择了要使用的3列数据。
二、数据清洗与分析
edu.head() # 查看前五行数据
edu.tail() # 查看最后五行数据
edu.describe() # 快速统计数字列信息,包括计数、平均值、最大最小值、标准差等
edu.info() # 查看每列的名称、数量、类型、有无空值
edu.sample(10) # 查看任意5行数据
通过上述方法快速查看数据的整体信息,了解数据概况。
edu['Value']=pd.to_numeric(edu['Value'],errors='coerce')
# 使用to_numeric()方法将Value转换为float型,并将空值变为NaN
edu['Value'] # 使用引号,查看Value列
edu[7:10] # 使用冒号,查看7、8、9三行,冒号两边方框取值为左闭右开区间
edu.loc[10:13,['TIME','GEO']] # 使用loc[]查看给定的行和列,冒号两边取值为闭区间
edu[edu['Value']>7] # 使用布尔索引筛选数据
edu[edu['Value'].isnull()]) # 使用isnull()方法查看有缺失值的数据
通过上述方法分块查看数据的切片信息,了解数据的详细情况。
a=edu['Value']/100 # 直接对Value列数据操作,除以100
b=edu['Value'].apply(np.sqrt) # 使用apply()方法,括号内写函数名称对Value列数据操作,求平方根
c=edu['Value'].apply(lambda p : p*2) # 使用apply()方法,括号内使用lambda关键字,冒号右边编写函数,乘2
通过上述方法对数据集进行操作,根据需求处理数据。
filtered_data=edu[edu['TIME']>2005] # 筛选2005年后的数据
pivedu=pd.pivot_table(filtered_data,values='Value',index=['GEO'],columns=['TIME']) # 重排数据
pivedu=pivedu.drop(['Euro area (13 countries)','Euro area (15 countries)','Euro area (17 countries)','Euro area (18 countries)','European Union (25 countries)','European Union (27 countries)'
,'European Union (28 countries)'],0) # 删除不需要的行
pivedu=pivedu.rename(index={'Germany (until 1990 former territory of the FRG)':'Germany'})
# 重命名
pivedu=pivedu.dropna() # 去重空值
pivedu.rank(ascending=False,method='first') #排序
totalSum=pivedu.sum(axis=1)
totalSum.rank(ascending=False,method='dense').sort_values().head()
通过上述方法重建表格(数据透视表),并排序数据。
三、数据可视化
totalSum=pivedu.sum(axis=1).sort_values(ascending=False)
totalSum.plot(kind='bar',style='b',alpha=0.4,title='Total Values for Country')
my_colors=['b','r','g','y','m','c']
ax=pivedu.plot(kind='barh',stacked=True,alpha=0.6,color=my_colors,title="every year's Values ")