建个网站,广告公司起什么名字好,广西做网站公司,电子商务网站管理系统Python NumPy 数据分析#xff1a;处理复杂数据的高效方法 文章目录 Python NumPy 数据分析#xff1a;处理复杂数据的高效方法一 数据来源二 获取指定日期数据三 获取指定行列数据四 求和计算五 比例计算六 平均值和标准差七 完整代码示例八 源码地址 本文详细介绍了如何使用…Python NumPy 数据分析处理复杂数据的高效方法 文章目录 Python NumPy 数据分析处理复杂数据的高效方法一 数据来源二 获取指定日期数据三 获取指定行列数据四 求和计算五 比例计算六 平均值和标准差七 完整代码示例八 源码地址 本文详细介绍了如何使用 Python 和 NumPy 对复杂数据进行高效的数据分析。通过从 Kaggle 获取的公开数据集演示了如何读取 CSV 文件、提取特定日期和字段的数据并进行数据的统计与分析。本文展示了使用 NumPy 进行数据操作的便捷方式如通过索引获取指定行列数据计算累计数值和新增长的总数还讲解了如何计算比率、平均值、标准差等关键统计数据。文章还包括完整的代码示例帮助读者轻松上手进行复杂数据的分析任务。
导入 NumPy
import numpy as np一 数据来源
数据来源Kaggle 上的公开数据集 读取数据如下
def get_result():with open(csv/your_data.csv, r, encodingutf-8) as f:data f.readlines()your_data {date: [],data: [],header: [h for h in data[0].strip().split(,)[1:]]}for row in data[1:]:split_row row.strip().split(,)your_data[date].append(split_row[0])your_data[data].append([float(n) for n in split_row[1:]])return your_data数据太多可以先看少部分数据如下 # 获取少数行数据print(your_data[data][:2])print(your_data[date][:5])二 获取指定日期数据
date_idx your_data[date].index(2020-02-03)
print(日期-索引转换, date_idx)data np.array(your_data[data])for header, number in zip(your_data[header], data[date_idx]):print(header, :, number)三 获取指定行列数据
# 获取指定行列数据
row_idx your_data[date].index(2020-01-24) # 获取日期索引
column_idx your_data[header].index(Confirmed) # 获取标题的索引
confirmed0124 data[row_idx, column_idx]
print(截止 2020-01-24 的累积数, confirmed0124)row_idx your_data[date].index(2020-07-23) # 获取日期索引
column_idx your_data[header].index(New deaths) # 获取标题的索引
result data[row_idx, column_idx]
print(截止 2020-07-23 的数, result)四 求和计算
# 总增长数
row1_idx your_data[date].index(2020-01-25)
row2_idx your_data[date].index(2020-07-22)
new_cases_idx your_data[header].index(New cases)# 注意要 row1_idx 1 得到从 01-25 这一天的新增
# row2_idx 1 来包含 7 月 22 的结果
new_cases data[row1_idx 1: row2_idx 1, new_cases_idx]
# print(new_cases)
overall new_cases.sum()
print(总共, overall)五 比例计算
# 比例计算
new_cases_idx your_data[header].index(New cases)
new_recovered_idx your_data[header].index(New recovered)not_zero_mask data[:, new_recovered_idx] ! 0
ratio data[not_zero_mask, new_cases_idx] / data[not_zero_mask, new_recovered_idx]代码中出现 nannan 在 numpy 中表示的是 Not a Number说明计算有问题代码 not_zero_mask data[:, new_recovered_idx] ! 0 避免除数为 0 的情况。
六 平均值和标准差
# 平均值, 标准差
ratio_mean ratio.mean()
ratio_std ratio.std()
print(平均比例, ratio_mean, 标准差, ratio_std)平均比例 和 标准差计算。
七 完整代码示例
# This is a sample Python script.# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import numpy as np# 读取数据
def get_result():with open(csv/your_data.csv, r, encodingutf-8) as f:data f.readlines()your_data {date: [],data: [],header: [h for h in data[0].strip().split(,)[1:]]}for row in data[1:]:split_row row.strip().split(,)your_data[date].append(split_row[0])your_data[data].append([float(n) for n in split_row[1:]])return your_datadef print_hi(name):# Use a breakpoint in the code line below to debug your script.print(fHi, {name}) # Press ⌘F8 to toggle the breakpoint.your_data get_result()# 获取少数行数据print(your_data[data][:2])print(your_data[date][:5])# 获取指定日期数据date_idx your_data[date].index(2020-02-03)print(2020-02-03 日期-索引转换, date_idx)data np.array(your_data[data])for header, number in zip(your_data[header], data[date_idx]):print(header, :, number)# 获取指定行列数据row_idx your_data[date].index(2020-01-24) # 获取日期索引column_idx your_data[header].index(Confirmed) # 获取标题的索引confirmed0124 data[row_idx, column_idx]print(截止 2020-01-24 的累积数, confirmed0124)row_idx your_data[date].index(2020-07-23) # 获取日期索引column_idx your_data[header].index(New deaths) # 获取标题的索引result data[row_idx, column_idx]print(截止 2020-07-23 的数, result)# 求和计算row1_idx your_data[date].index(2020-01-25)row2_idx your_data[date].index(2020-07-22)new_cases_idx your_data[header].index(New cases)# 注意要 row1_idx 1 得到从 01-25 这一天的新增# row2_idx 1 来包含 7 月 22 的结果new_cases data[row1_idx 1: row2_idx 1, new_cases_idx]# print(new_cases)overall new_cases.sum()print(总共, overall)# 比例计算new_cases_idx your_data[header].index(New cases)new_recovered_idx your_data[header].index(New recovered)not_zero_mask data[:, new_recovered_idx] ! 0ratio data[not_zero_mask, new_cases_idx] / data[not_zero_mask, new_recovered_idx]# 平均值, 标准差ratio_mean ratio.mean()ratio_std ratio.std()print(平均比例, ratio_mean, 标准差, ratio_std)if __name__ __main__:print_hi(数据分析)# See PyCharm help at https://www.jetbrains.com/help/pycharm/复制粘贴并覆盖到你的 main.py 中运行运行结果如下。
Hi, 数据分析
[[555.0, 17.0, 28.0, 510.0, 0.0, 0.0, 0.0, 3.06, 5.05, 60.71, 6.0], [654.0, 18.0, 30.0, 606.0, 99.0, 1.0, 2.0, 2.75, 4.59, 60.0, 8.0]]
[2020-01-22, 2020-01-23, 2020-01-24, 2020-01-25, 2020-01-26]
2020-02-03 日期-索引转换 12
Confirmed : 19887.0
Deaths : 426.0
Recovered : 604.0
Active : 18857.0
New cases : 3100.0
New deaths : 64.0
New recovered : 145.0
Deaths / 100 Cases : 2.14
Recovered / 100 Cases : 3.04
Deaths / 100 Recovered : 70.53
No. of countries : 25.0
截止 2020-01-24 的累积数 941.0
截止 2020-07-23 的数 9966.0
总共 15247309.0
平均比例 7.049556348053241 标准差 19.094025710450307八 源码地址
代码地址
国内看 Gitee 之 numpy/数据分析.py
国外看 GitHub 之 numpy/数据分析.py
引用 莫烦 Python