当前位置: 首页 > news >正文

数据科学与计算:从基础到实践的全面探索

在当今数字化时代,数据科学已成为推动各行业发展的核心力量之一。从数据分析到可视化,掌握数据科学工具和技术对于理解复杂数据集、提取有价值信息至关重要。本文将总结一系列关于数据科学与计算的课程内容,涵盖 NumPy、Pandas、Matplotlib 和 Seaborn 等工具的使用,并结合实际案例——电商双11美妆数据分析,展示如何通过代码实现数据处理和可视化。

一、NumPy:数据科学的核心工具

NumPy 是 Python 中用于科学计算的基础库,提供了强大的多维数组对象 ndarray 和一系列操作这些数组的工具。通过 NumPy,可以高效地进行数组创建、数学运算、数组形状修改、切片和索引等操作。

1. NumPy 的安装与导入

安装:使用 pip install numpyconda install numpy

导入:通常使用 import numpy as np

2. 创建数组

NumPy 提供了多种创建数组的方法:

import numpy as np# 使用列表创建数组
arr = np.array([1, 2, 3, 4, 5])
print("使用列表创建数组:", arr)# 创建全零数组
zeros_arr = np.zeros((3, 4))
print("全零数组:\n", zeros_arr)# 创建全一数组
ones_arr = np.ones((2, 3))
print("全一数组:\n", ones_arr)# 创建空数组(未初始化)
empty_arr = np.empty((2, 2))
print("空数组:\n", empty_arr)# 创建数值序列
seq_arr = np.arange(0, 10, 2)
print("数值序列:", seq_arr)# 创建等差数列
linspace_arr = np.linspace(0, 10, 5)
print("等差数列:", linspace_arr)

3. 数组属性

        ndim:数组的维度。

        shape:数组的形状。

        size:数组中元素的总数。

        dtype:数组元素的数据类型。

arr = np.array([[1, 2, 3], [4, 5, 6]])
print("数组:\n", arr)
print("维度:", arr.ndim)
print("形状:", arr.shape)
print("元素总数:", arr.size)
print("数据类型:", arr.dtype)

4. 数组操作

NumPy 提供了丰富的数组操作功能,包括广播机制、形状修改、切片和索引等。

广播机制

广播机制允许不同形状的数组进行运算。例如:

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([1, 0, 1])
result = a + b
print("广播结果:\n", result)
修改数组形状

reshape():改变数组的形状。

flatten()ravel():将多维数组展平为一维数组。

arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_arr = arr.reshape(3, 2)
print("reshape 后的数组:\n", reshaped_arr)flattened_arr = arr.flatten()
print("flatten 后的数组:", flattened_arr)raveled_arr = arr.ravel()
print("ravel 后的数组:", raveled_arr)
翻转数组

        transpose()ndarray.T:转置数组。

        swapaxes():交换数组的轴。

arr = np.array([[1, 2, 3], [4, 5, 6]])
transposed_arr = arr.transpose()
print("转置后的数组:\n", transposed_arr)T_arr = arr.T
print("使用 T 转置的数组:\n", T_arr)swapped_arr = arr.swapaxes(0, 1)
print("交换轴后的数组:\n", swapped_arr)
连接和分割数组

concatenate():连接数组。

hstack()vstack():水平和垂直堆叠数组。

split()hsplit()vsplit():分割数组。

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
concatenated_arr = np.concatenate((a, b))
print("连接后的数组:", concatenated_arr)a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
hstacked_arr = np.hstack((a, b))
print("水平堆叠后的数组:\n", hstacked_arr)vstacked_arr = np.vstack((a, b))
print("垂直堆叠后的数组:\n", vstacked_arr)split_arr = np.split(a, 2, axis=0)
print("分割后的数组:", split_arr)

二、Pandas:数据分析与处理的利器

Pandas 是一个开源的 Python 数据分析库,提供了强大的数据结构和数据分析工具。它能够处理结构化数据,支持数据清洗、数据筛选、数据聚合等操作。

1. Pandas 的安装与导入

安装:使用 pip install pandasconda install pandas

导入:通常使用 import pandas as pd

2. 数据结构

Series:一维数组,类似于表格中的列。

DataFrame:二维表格型数据结构,包含行索引和列索引。

创建 Series
import pandas as pd# 使用列表创建 Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print("使用列表创建的 Series:\n", s)# 使用字典创建 Series
s_dict = pd.Series({'a': 1, 'b': 2, 'c': 3})
print("使用字典创建的 Series:\n", s_dict)
创建 DataFrame
# 使用列表创建 DataFrame
df_list = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
print("使用列表创建的 DataFrame:\n", df_list)# 使用字典创建 DataFrame
df_dict = pd.DataFrame({'A': [1, 3], 'B': [2, 4]})
print("使用字典创建的 DataFrame:\n", df_dict)

3. 数据读取与写入

Pandas 支持多种数据格式的读取和写入,包括 CSV、Excel、SQL 数据库等。

# 读取 CSV 文件
df_csv = pd.read_csv('data.csv')
print("读取的 CSV 文件:\n", df_csv.head())# 读取 Excel 文件
df_excel = pd.read_excel('data.xlsx')
print("读取的 Excel 文件:\n", df_excel.head())# 读取 SQL 数据库
import sqlite3
conn = sqlite3.connect('data.db')
df_sql = pd.read_sql('SELECT * FROM table_name', conn)
print("读取的 SQL 数据:\n", df_sql.head())

4. 数据处理

Pandas 提供了丰富的数据处理功能,包括处理缺失值、数据筛选、数据聚合等。

处理缺失值
# 检查缺失值
print("检查缺失值:\n", df_csv.isnull())# 删除包含缺失值的行
df_dropped = df_csv.dropna()
print("删除缺失值后的数据:\n", df_dropped)# 填充缺失值
df_filled = df_csv.fillna(value=0)
print("填充缺失值后的数据:\n", df_filled)
数据筛选
# 使用布尔索引筛选数据
filtered_df = df_csv[df_csv['A'] > 2]
print("筛选后的数据:\n", filtered_df)# 使用 loc 和 iloc 筛选数据
selected_df = df_csv.loc[1:3, ['A', 'B']]
print("使用 loc 筛选的数据:\n", selected_df)selected_df_iloc = df_csv.iloc[1:3, [0, 1]]
print("使用 iloc 筛选的数据:\n", selected_df_iloc)
数据聚合
# 计算均值
mean_values = df_csv.mean()
print("均值:\n", mean_values)# 计算中位数
median_values = df_csv.median()
print("中位数:\n", median_values)# 计算总和
sum_values = df_csv.sum()
print("总和:\n", sum_values)

三、Matplotlib:数据可视化的基础库

Matplotlib 是 Python 中最常用的绘图库之一,能够生成各种静态、动态和交互式图表。

1. Matplotlib 的安装与导入

安装:使用 pip install matplotlibconda install matplotlib

导入:通常使用 import matplotlib.pyplot as plt

2. 绘图基础

Matplotlib 提供了丰富的绘图功能,包括折线图、散点图、柱形图、饼图和直方图等。

绘制折线图
import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y, label='Line 1', color='blue', linestyle='--', marker='o')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Line Plot')
plt.legend()
plt.grid(True)
plt.show()
绘制散点图
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y, color='red', marker='o')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Scatter Plot')
plt.show()
绘制柱形图
x = ['A', 'B', 'C', 'D', 'E']
y = [2, 3, 5, 7, 11]
plt.bar(x, y, color='green')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Bar Plot')
plt.show()
绘制饼图
labels = ['A', 'B', 'C', 'D', 'E']
sizes = [2, 3, 5, 7, 11]
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
plt.title('Pie Chart')
plt.show()
绘制直方图
data = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
plt.hist(data, bins=5, color='purple', edgecolor='black')
plt.xlabel('Values')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()

3. 图形美化

Matplotlib 提供了丰富的图形美化功能,包括设置标题、轴标签、网格线、自定义标记和线条样式等。

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y, label='Line 1', color='blue', linestyle='--', marker='o', markersize=10, markerfacecolor='red', markeredgecolor='black')
plt.xlabel('X-axis', fontsize=12)
plt.ylabel('Y-axis', fontsize=12)
plt.title('Line Plot with Customizations', fontsize=14)
plt.legend(fontsize=10)
plt.grid(True, linestyle='--', linewidth=0.5)
plt.show()

四、Seaborn:高级数据可视化库

Seaborn 是基于 Matplotlib 的高级数据可视化库,专注于绘制统计图形。

1. Seaborn 的安装与导入

安装:使用 pip install seabornconda install seaborn

导入:通常使用 import seaborn as sns

2. 绘图功能

Seaborn 提供了丰富的统计图形绘制功能,包括散点图、折线图、柱形图、箱线图、热图和小提琴图等。

绘制散点图
import seaborn as sns
import matplotlib.pyplot as plt# 加载示例数据集
tips = sns.load_dataset('tips')
sns.scatterplot(x='total_bill', y='tip', data=tips)
plt.title('Scatter Plot with Seaborn')
plt.show()
绘制折线图
flights = sns.load_dataset('flights')
flights = flights.pivot('month', 'year', 'passengers')
sns.lineplot(data=flights)
plt.title('Line Plot with Seaborn')
plt.show()
绘制柱形图
sns.barplot(x='day', y='total_bill', data=tips)
plt.title('Bar Plot with Seaborn')
plt.show()
绘制箱线图
sns.boxplot(x='day', y='total_bill', data=tips)
plt.title('Box Plot with Seaborn')
plt.show()
绘制热图
sns.heatmap(flights, annot=True, fmt='d')
plt.title('Heatmap with Seaborn')
plt.show()
绘制小提琴图
sns.violinplot(x='day', y='total_bill', data=tips)
plt.title('Violin Plot with Seaborn')
plt.show()

五、实际案例:电商双11美妆数据分析

在实际应用中,数据科学工具可以帮助我们分析复杂的商业数据。以下是一个关于电商双11美妆数据分析的案例,展示如何使用 Pandas 和 Matplotlib 进行数据处理和可视化。

1. 数据处理

假设我们有一个包含双11美妆产品销售数据的 CSV 文件 sales.csv,包含以下列:

product_id:产品 ID

product_name:产品名称

category:产品类别

price:产品价格

sales:销售数量

rating:用户评分

读取数据
import pandas as pd# 读取 CSV 文件
df = pd.read_csv('sales.csv')
print("原始数据:\n", df.head())
处理缺失值
# 检查缺失值
print("检查缺失值:\n", df.isnull().sum())# 删除包含缺失值的行
df_cleaned = df.dropna()
print("删除缺失值后的数据:\n", df_cleaned.head())
数据筛选
# 筛选特定类别的产品
df_filtered = df_cleaned[df_cleaned['category'] == '口红']
print("筛选后的数据:\n", df_filtered.head())

2. 数据可视化

使用 Matplotlib 和 Seaborn 对数据进行可视化分析。

绘制销售趋势图
import matplotlib.pyplot as plt
import seaborn as sns# 按日期分组并计算总销售额
df_sales = df_cleaned.groupby('product_id')['sales'].sum().reset_index()
sns.lineplot(x='product_id', y='sales', data=df_sales)
plt.title('销售趋势图')
plt.xlabel('产品 ID')
plt.ylabel('销售数量')
plt.show()
绘制不同品牌和产品的销售分布
# 按品牌分组并计算总销售额
df_brand_sales = df_cleaned.groupby('product_name')['sales'].sum().reset_index()
sns.barplot(x='product_name', y='sales', data=df_brand_sales)
plt.title('不同品牌和产品的销售分布')
plt.xlabel('产品名称')
plt.ylabel('销售数量')
plt.xticks(rotation=90)
plt.show()
分析用户评价和产品评分
# 绘制评分分布
sns.histplot(df_cleaned['rating'], bins=10, kde=True)
plt.title('产品评分分布')
plt.xlabel('评分')
plt.ylabel('频率')
plt.show()

通过这些分析,我们可以清晰地展示数据中的模式和趋势,为商业决策提供支持。

六、总结

数据科学与计算是一个涉及多个工具和技术的领域。NumPy 提供了强大的数组操作功能,Pandas 专注于数据分析和处理,Matplotlib 和 Seaborn 则帮助我们将数据可视化。通过这些工具的结合使用,我们可以高效地处理和分析数据,从而更好地理解数据背后的含义。无论是学术研究还是商业应用,掌握这些工具都将为你的数据分析之旅提供强大的支持。

http://www.dtcms.com/a/330129.html

相关文章:

  • 深度学习(6):参数初始化
  • 动画相关 属性动画+animateToImmediately+ImageAnimator帧动画组件+模态转场
  • 【C++】哈希表的实现
  • EUDR的核心内容,EUDR认证的好处,EUDR意义
  • web开发,在线%射击比赛管理%系统开发demo,基于html,css,jquery,python,django,三层mysql数据库
  • lesson37:MySQL核心技术详解:约束、外键、权限管理与三大范式实践指南
  • SpringBoot工程妙用:不启动容器也能享受Fat Jar的便利
  • CAD 的 C# 开发中,对多段线(封闭多边形)内部的点进行 “一笔连线且不交叉、不出界
  • ECC的原理、背景、工作机制和数学基础
  • 升级Gradle版本后,安卓点击事件使用了SwitchCase的情况下,报错无法使用的解决方案
  • Query通过自注意力机制更新(如Transformer解码器的自回归生成)的理解
  • Unity3D 中纯 Shader 的双色纹理的平铺计算与实现
  • 二次筛法Quadratic Sieve因子分解法----C语言实现
  • [git diff] 对比检查变更 | 提交前复审 | 版本回退
  • SQL 核心操作全解析:从基础查询到关联关系实战
  • Spring Boot项目通过Feign调用三方接口的详细教程
  • 在es中安装kibana
  • 雨量系列篇一:翻斗雨量传感器与压电雨量传感器的区别是什么
  • java法定退休年龄计算器
  • Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞检测,命令执行,Getshell
  • reactive和ref使用方法及场景
  • GitHub 热榜项目 - 日榜(2025-08-13)
  • 光伏电站运维巡检指南
  • 02 流程流转
  • H616基于官方外设开发----1
  • 每日五个pyecharts可视化图表-line:从入门到精通 (5)
  • C++ 四种类型转换
  • el-table合并相同名称的列
  • 朝花夕拾(三)---------中文分词利器jieba库的详解与实战应用(python)
  • 洛谷 小 Y 拼木棒 贪心