分析目标
本文旨在探索数据分析发展历程中的关键时刻,包括重要人物的贡献和大事件的发生。通过对比不同年代的数据分析技术和方法,我们可以更好地理解数据分析如何成为今天决策制定不可或缺的一部分。
分析步骤
-
收集数据:搜集关于数据分析历史上重要人物和事件的信息。
-
数据与可视化:创建一组数据,展示不同年份全球数据量的增长,并通过可视化技术加入人物和大事件的标记。
-
分析改进前后的差异:对比分析人物贡献和大事件发生前后数据分析技术的变化。
数据与可视化
我们创建了一组数据,显示从1662年至2010年全球数据量的增长。重要的里程碑包括John Graunt的统计分析开始,Alan Turing的图灵机概念,Tim Berners-Lee的万维网发明,以及Hadley Wickham在数据分析工具方面的现代化努力。
通过Matplotlib库,我们将这些数据和事件以及相关人物的贡献呈现在一个时间线图上。这不仅展示了数据量的增长,也突出了数据分析历史上的重要时刻和人物。
改进前
这是每个人物对应的时间和主要的贡献,我们通过文字的方式进行描述,对于每个时间点、数据量、整体的变化感知不是很清晰,没有太多的体感,数据量较小也不知道具体是多少,对数据分析来说不是很友好的呈现方式
-
John Graunt (1662): 被认为是统计学的创始人之一。此时期数据量非常小,主要依靠手工记录。
-
数据量: 微乎其微
-
大事件: 开始使用统计方法分析人口数据。
-
-
Carl Friedrich Gauss (1801): 对统计理论做出了重要贡献,包括最小二乘法。
-
数据量: 较小
-
大事件: 统计学和概率理论的发展。
-
-
Ronald A. Fisher (1912): 现代统计学的重要人物,提出方差分析等概念。
-
数据量: 逐渐增长
-
大事件: 统计学在科学研究中的应用扩展。
-
-
Alan Turing (1936): 计算机科学的先驱,提出图灵机模型。
-
数据量: 逐渐增长
-
大事件: 计算机科学的诞生,数据处理能力得到提升。
-
-
Tim Berners-Lee (1989): 万维网的发明者,极大地促进了数据的生成和共享。
-
数据量: 显著增长
-
大事件: 互联网时代的开始,数据量开始爆炸性增长。
-
-
Jim Gray (2003): 数据库技术的先驱,对大数据处理做出了贡献。
-
数据量: 巨大
-
大事件: 数据库和大数据技术的发展。
-
-
Geoffrey Hinton (2006): 深度学习和神经网络的领军人物。
-
数据量: 极大
-
大事件: 深度学习技术的突破,开启了AI时代。
-
-
Hadley Wickham (2010): R语言的重要贡献者,简化了数据分析过程。
-
数据量: 巨量
-
大事件: 数据科学和统计计算的现代工具和方法的发展。
-
第一次改进
我们通过一个表格来展示数据分析领域的关键人物,数据量级和大事件,对同类项进行划分,能比较清晰的看出不同字段对应的事件和人物,数据量的情况等。但是对于数据分析来说我们需要对可视化有更高的要求
第二次改进
我们通过一个折线图把关键信息都描述在一个图里,不仅呈现了数据量的增长,还描绘了数据分析领域发展的脉络,包括人物直观的图像。这为我们提供了一个全面的视角,展现了数据分析是如何逐步成为现代社会的重要组成部分,包括哪些重点事件和人物的推动下演进。这里均通过python代码实现。
分析结论
从John Graunt的早期统计学应用,到Hadley Wickham对现代数据科学工具的贡献,数据分析领域经历了巨大的变革。随着全球数据量的爆炸式增长,数据分析的重要性也随之增加。历史上的人物和大事件不仅塑造了数据分析的方法和技术,也影响了我们如何理解和利用数据。未来,随着技术的不断进步,数据分析将继续发挥其在解决复杂问题和推动社会进步中的关键作用。
这篇文章通过对过去和现在的对比,展现了数据分析的发展历程和关键人物的重要性,为理解其对未来的潜在影响提供了不同的视角。
python代码(包括对人物图像的插入)
需要插入的人物头像欢迎关注 公众号 数据分析螺丝钉 回复关键词 python可视化 领取
import matplotlib.pyplot as plt
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
import numpy as np
# Define the data for the timeline
years = [1662, 1801, 1912, 1936, 1989, 2003, 2010]
data_volumes = [0.0001, 0.0001, 0.0001, 0.0002, 0.01, 1, 2] # in Zettabytes
persons = ["John Graunt", "Carl Friedrich Gauss", "Ronald A. Fisher", "Alan Turing",
"Tim Berners-Lee", "Jim Gray", "Hadley Wickham"]
milestones = [
"John Graunt \n Beginning of statistical analysis",
"Carl Friedrich Gauss \n Development of the least squares method",
"Ronald A. Fisher \n Introduction of variance analysis",
"Alan Turing \n Conceptualization of the Turing Machine",
"Tim Berners-Lee \n Invention of the World Wide Web",
"Jim Gray \n Advances in database technology",
"Hadley Wickham \n Modernization of data analysis tools"
]
# Custom offsets for each image in the format (x_offset, y_offset)
offsets = {
"John Graunt": (1680,0.0005),
"Carl Friedrich Gauss": (1820, 0.0005),
"Ronald A. Fisher": (1920, 0.0005),
"Alan Turing": (1950, 0.001),
"Tim Berners-Lee": (1980, 0.05),
"Jim Gray": (2000, 10),
"Hadley Wickham": (2020, 10),
# Add more offsets for other people if needed
}
# Set up the figure and axis
fig, ax = plt.subplots(figsize=(15, 8))
# Plot the data volume over time
ax.plot(years, data_volumes, '-o', color='blue')
# Set the y-scale to logarithmic to accommodate the wide range of data volumes
ax.set_yscale('log')
ax.set_xlabel('Year')
ax.set_ylabel('Global Data Volume (Zettabytes)')
ax.set_title('Global Data Volume and Major Contributors')
# Insert images and labels for each person at their respective year with the correct data volume
base_image_path = '/xx/datapeople/' # Replace with your own path
# Function to add an image
def add_image(ax, base_image_path, coord, person_name):
# Read the image
img = plt.imread(image_path)
# Get custom offset for the person
offset_x, offset_y = offsets.get(person_name, (0, 0))
# Create imagebox
imagebox = OffsetImage(img, zoom=0.15)
ab = AnnotationBbox(imagebox, coord, frameon=False, boxcoords="data",
xybox=(offset_x, offset_y), box_alignment=(1, 1))
ax.add_artist(ab)
# Insert images and labels for each person
for i, year in enumerate(years):
coord = (year, data_volumes[i])
person_name = persons[i]
image_path = f'{base_image_path}{person_name}.jpeg' # Image names match the person's name
add_image(ax, image_path, coord, person_name)
# Add milestone annotations below each image
ax.annotate(milestones[i], xy=coord, xytext=(0, -100), textcoords='offset points',
ha='center', va='top', fontsize=9, arrowprops=dict(arrowstyle="->", color='black'))
plt.show()