Python 教程之数据分析(4)—— 使用 Python 进行数据分析和可视化
Python 是一种用于进行数据分析的出色语言,主要是因为以数据为中心的 Python 包的奇妙生态系统。Pandas就是其中之一,它使导入和分析数据变得更加容易。在本文中,我使用 Pandas 分析了来自流行的“statweb.stanford.edu”网站的联合国公共数据集的 Country Data.csv 文件中的数据。
在分析印度国家数据时,我介绍了 Pandas 的关键概念如下。在阅读本文之前,请大致了解 matplotlib 和 csv 的基础知识。
安装
pandas 最简单的方法是使用 pip:
pip install pandas
或者,从这里下载
在 Pandas 中创建数据框
数据框的创建是通过使用pd.Series方法将多个系列传递给 DataFrame 类来完成的。在这里,它传入两个 Series 对象,s1 作为第一行,s2 作为第二行。
例子:
# 将两个系列分配给 s1 和 s2
s1 = pd.Series([1,2])
s2 = pd.Series(["Ashish", "Sid"])
# 将系列对象构建为数据
df = pd.DataFrame([s1,s2])
# 显示数据框
df
# 以另一种方式获取索引和列值的数据框架
dframe = pd.DataFrame([[1,2],["Ashish", "Sid"]],
index=["r1", "r2"],
columns=["c1", "c2"])
dframe
# 以另一种方式构建类似字典的容器
dframe = pd.DataFrame({
"c1": [1, "Ashish"],
"c2": [2, "Sid"]})
dframe
输出:
使用 Pandas 导入数据
第一步是读取数据。数据存储为逗号分隔值或 csv 文件,其中每一行由新行分隔,每一列由逗号 (,) 分隔。为了能够在 Python 中处理数据,需要将 csv 文件读入 Pandas DataFrame。DataFrame 是一种表示和处理表格数据的方法。表格数据有行和列,就像这个csv 文件一样(点击下载)。
例子:
# 导入pandas库,重命名为pd
import pandas as pd
# 将 IND_data.csv 读入 DataFrame,分配给 df
df = pd.read_csv("IND_data.csv")
# 默认打印 DataFrame 的前 5 行
df.head()
# 打印编号 DataFrame 的行数和列数
df.shape
输出:
29,10
使用 Pandas 索引 DataFrame
可以使用pandas.DataFrame.iloc方法进行索引。iloc 方法允许按位置检索尽可能多的行和列。
例子:
# 打印前 5 行和复制 df.head() 的每一列
df.iloc[0:5,:]
# 打印整行和整列
df.iloc[:,:]
# 从第 5 行和前 5 列打印
df.iloc[5:,:5]
在 Pandas 中使用标签进行索引
可以使用pandas.DataFrame.loc方法对标签进行索引,该方法允许使用标签而不是位置进行索引。
例子:
# 打印前五行,包括第 5 个索引和 df 的每一列
df.loc[0:5,:]
# 从第 5 行开始打印整列
df = df.loc[5:,:]
上面的内容实际上看起来与 df.iloc[0:5,:] 没有太大区别。这是因为虽然行标签可以采用任何值,但我们的行标签与位置完全匹配。但是在处理数据时,列标签可以让事情变得更容易。例子:
# 打印前 5 行时间段值
df.loc[:5,"Time period"]
使用 Pandas 进行 DataFrame 数学运算
数据帧的计算可以使用 pandas 工具的统计函数来完成。
例子:
# 计算各种汇总统计信息,不包括 NaN 值
df.describe()
# 用于计算相关性
df.corr()
# 计算数值数据等级
df.rank()
熊猫绘图
这些示例中的绘图是使用引用 matplotlib API 的标准约定制作的,该 API 提供了 pandas 的基础知识,可以轻松创建美观的绘图。
例子:
# 导入需要的模块
import matplotlib.pyplot as plt
# 绘制直方图
df['Observation Value'].hist(bins=10)
# 显示存在大量异常值/极值
df.boxplot(column='Observation Value', by = 'Time period')
# 将点绘制为散点图
x = df["Observation Value"]
y = df["Time period"]
plt.scatter(x, y, label= "stars", color= "m",
marker= "*", s=30)
# x 轴标签
plt.xlabel('Observation Value')
# 频率标签
plt.ylabel('Time period')
# 显示绘图的功能
plt.show()
- 点赞
- 收藏
- 关注作者
评论(0)