使用Python进行数据分析的方法介绍

263 阅读4分钟

阅读时间: 4 分钟

在这篇博客中,我们将介绍用于数据分析的Python软件包的概况。最后,我们将学习如何在Python中导入和导出数据,以及如何从数据集中获得基本的见解。

用于数据分析的Python包。

为了进行分析,有几个库可以帮助我们用最少的代码进行操作:

  • Pandas用于通过创建数据框架来提供简单的索引功能。
  • Numpy库在数组和与数组相关的操作中非常有用。
  • SciPy包括一些高级数学问题的函数。
  • Matplotlib 包是最著名的数据可视化库。它对制作图形和图画很有帮助。
  • Seaborn。它是基于Matplotlib的。它非常容易生成各种图,如热图、时间序列和小提琴图。通过机器学习算法,我们能够使用我们的数据集开发一个模型,并获得预测结果。
  • Scikit-learn库包含统计建模的工具,包括回归、分类、聚类等等。
  • StatsModels也是一个Python模块,允许用户探索数据,估计统计模型,并进行统计测试。

导入数据

从各种资源加载和读取数据到Python程序的过程。

两个重要的属性。

  1. 格式 - .csv , .json , .xlsx
  2. 文件路径 - C:/Desktop/python/.....
# import library
import pandas as pd
import numpy as np
读取数据

我们使用pandas.read_csv() 函数来读取csv文件。在括号里,我们把文件路径和引号放在一起,这样pandas就会从这个地址把文件读到一个数据框里。文件路径可以是一个URL,也可以是你的本地文件地址。

因为数据不包括标题,我们可以在read_csv() 方法中添加一个参数headers = None ,这样pandas就不会自动将第一行设置为标题。

# Import pandas library
import pandas as pd

# Read the online file by the URL provides above, and assign it to variable "df"
other_path = "https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DA0101EN-SkillsNetwork/labs/Data%20files/auto.csv"
df = pd.read_csv(other_path, header=None)

在读取数据集之后,我们可以使用dataframe.head(n) 方法来检查数据框架的前n行,其中n是一个整数。与dataframe.head(n) 相反,dataframe.tail(n) 将显示数据框架的最下面的n行。

# show the first 5 rows using dataframe.head() method
print("The first 5 rows of the dataframe") 
df.head(5)

首先,我们创建一个列表 "标题",包括所有列名的顺序。然后,我们使用dataframe.columns = headers ,用我们创建的列表来替换头文件。

# create headers list
headers = ["symboling","normalized-losses","make","fuel-type","aspiration", "num-of-doors","body-style","drive-wheels","engine-location","wheel-base", "length","width","height","curb-weight","engine-type","num-of-cylinders", "engine-size","fuel-system","bore","stroke","compression-ratio","horsepower",         "peak-rpm","city-mpg","highway-mpg","price"]
print("headers\n", headers)

存储在Pandas数据框架中的主要类型是对象浮点intbooldatetime64。为了更好地学习每个属性,了解每一列的数据类型对我们来说总是有好处的。在Pandas中

df.dtypes

导出.csv文件

df.to_csv("automobile.csv", index=False)
描述

如果我们想得到每一列的统计摘要,例如:计数、列平均值、列标准差等,我们可以使用describe方法。

dataframe.describe()
df.describe()

数据归一化

归一化是将几个变量的值转化为类似范围的过程。典型的归一化包括对变量进行缩放,使变量的平均值为0,对变量进行缩放,使变量的方差为1,或者对变量进行缩放,使变量的值在0到1之间。

例子

为了证明规范化,假设我们想对 "长度"、"宽度 "和 "高度 "这几列进行缩放。

目标:想把这些变量归一化,使它们的值在0到1之间。

方法:用(原值)/(最大值)代替原值。

# replace (original value) by (original value)/(maximum value)
df['length'] = df['length']/df['length'].max()
df['width'] = df['width']/df['width'].max()

df['height'] = df['height']/df['height'].max() 
# show the scaled columns
df[["length","width","height"]].head()

分级

分级是将连续的数字变量转化为离散的分类 "仓 "的过程,用于分组分析。

例子:

在我们的数据集中,"马力 "是一个实值变量,范围从48到288,它有59个唯一的值。如果我们只关心大马力、中马力和小马力(3种类型)的汽车之间的价格差异呢?我们可以把它们重新排列成三个 "bin "来简化分析吗?

我们将使用pandas方法'cut'将'马力'列分割成3个bins

df["horsepower"]=df["horsepower"].astype(int, copy=True)

让我们绘制马力的直方图,看看马力的分布情况。

import matplotlib as plt
from matplotlib import pyplot
plt.pyplot.hist(df["horsepower"])

# set x/y labels and plot title
plt.pyplot.xlabel("horsepower")
plt.pyplot.ylabel("count")
plt.pyplot.title("horsepower bins")

我们希望有3个大小相等的带宽的bin,所以我们使用numpy的linspace(start_value, end_value, numbers_generated 函数。

bins = np.linspace(min(df["horsepower"]), max(df["horsepower"]), 4)
group_names = ['Low', 'Medium', 'High']
df['horsepower-binned'] = pd.cut(df['horsepower'], bins, labels=group_names, include_lowest=True )
df[['horsepower','horsepower-binned']].head(20)

总结

在这篇博客中,我们已经涵盖了导入和导出.csv文件,使用pandas库进行分析,使用matplotlib绘制图形和图表,归一化和分选。