数据分析

这篇博客是针对初学者的Python数据分析指南,强调了不必成为Python编程专家也能进行数据分析。作者分享了学习Python数据分析的常见误区,推荐了学习路径,包括从Code Academy开始,然后深入学习Numpy、Pandas和Matplotlib。博客详细介绍了Numpy和Pandas的基本概念,并提供了Matplotlib的四部分教程,涵盖基本绘图、颜色映射、注释和复杂图形等。
摘要由CSDN通过智能技术生成

使用Python一步一步地来进行数据分析总结

原文链接:Step by step approach to perform data analysis using Python 
译文链接:使用Python一步一步地来进行数据分析--By Michael翔

你已经决定来学习Python,但是你之前没有编程经验。因此,你常常对从哪儿着手而感到困惑,这么多Python的知识需要去学习。以下这些是那些开始使用Python数据分析的初学者的普遍遇到的问题:

  • 需要多久来学习Python?

  • 我需要学习Python到什么程度才能来进行数据分析呢?

  • 学习Python最好的书或者课程有哪些呢?

  • 为了处理数据集,我应该成为一个Python的编程专家吗?

当开始学习一项新技术时,这些都是可以理解的困惑,这是《在20小时内学会任何东西》的作者所说的。不要害怕,我将会告诉你怎样快速上手,而不必成为一个Python编程“忍者”。

不要犯我之前犯过的错

在开始使用Python之前,我对用Python进行数据分析有一个误解:我必须不得不对Python编程特别精通。因此,我参加了Udacity的Python编程入门课程,完成了code academy上的Python教程,同时阅读了若干本Python编程书籍。就这样持续了3个月(平均每天3个小时),我那会儿通过完成小的软件项目来学习Python。敲代码是快乐的事儿,但是我的目标不是去成为一个Python开发人员,而是要使用Python数据分析。之后,我意识到,我花了很多时间来学习用Python进行软件开发,而不是数据分析。

在几个小时的深思熟虑之后,我发现,我需要学习5个Python库来有效地解决一系列的数据分析问题。然后,我开始一个接一个的学习这些库。

在我看来,精通用Python开发好的软件才能够高效地进行数据分析,这观点是没有必要的。

忽略给大众的资源

有许多优秀的Python书籍和在线课程,然而我不并不推荐它们中的一些,因为,有些是给大众准备的而不是给那些用来数据分析的人准备的。同样也有许多书是“用Python科学编程”的,但它们是面向各种数学为导向的主题的,而不是成为为了数据分析和统计。不要浪费浪费你的时间去阅读那些为大众准备的Python书籍。

在进一步继续之前,首先设置好你的编程环境,然后学习怎么使用IPython notebook

学习途径

code academy开始学起,完成上面的所有练习。每天投入3个小时,你应该在20天内完成它们。Code academy涵盖了Python基本概念。但是,它不像Udacity那样以项目为导向;没关系,因为你的目标是从事数据科学,而不是使用Python开发软件。

当完成了code academy练习之后,看看这个Ipython notebook:

Python必备教程(在总结部分我已经提供了下载链接)。

它包括了code academy中没有提到的一些概念。你能在1到2小时内学完这个教程。

现在,你知道足够的基础知识来学习Python库了。

Numpy

首先,开始学习Numpy吧,因为它是利用Python科学计算的基础包。对Numpy好的掌握将会帮助你有效地使用其他工具例如Pandas。

我已经准备好了IPython笔记,这包含了Numpy的一些基本概念。这个教程包含了Numpy中最频繁使用的操作,例如,N维数组,索引,数组切片,整数索引,数组转换,通用函数,使用数组处理数据,常用的统计方法,等等。

Numpy Basics Tutorial

Index Numpy 遇到Numpy陌生函数,查询用法,推荐!

Pandas

Pandas包含了高级的数据结构和操作工具,它们使得Python数据分析更加快速和容易。

教程包含了series, data frams,从一个axis删除数据,缺失数据处理,等等。

Pandas Basics Tutorial

Index Pandas 遇到陌生函数,查询用法,推荐!

pandas教程-百度经验

Matplotlib

这是一个分为四部分的Matplolib教程。

1st 部分:

第一部分介绍了Matplotlib基本功能,基本figure类型。

Simple Plotting example

In [113]:
%matplotlib inline 
import matplotlib.pyplot as plt #importing matplot lib library import numpy as np x = range(100) #print x, print and check what is x y =[val**2 for val in x] #print y plt.plot(x,y) #plotting x and y 
Out[113]:
[<matplotlib.lines.Line2D at 0x7857bb0>]
 
 
fig, axes = plt.subplots(nrows=1, ncols=2) for ax in axes: ax.plot(x, y, 'r') ax.set_xlabel('x') ax.set_ylabel('y') ax.set_title('title') fig.tight_layout() 
 
fig, ax = plt.subplots() ax.plot(x, x**2, label="y = x**2") ax.plot(x, x**3, label="y = x**3") ax.legend(loc=2); # upper left corner ax.set_xlabel('x') ax.set_ylabel('y') ax.set_title('title'); 
 
fig, axes = plt.subplots(1, 2, figsize=(10,4)) axes[0].plot(x, x**2, x, np.exp(x)) axes[0].set_title("Normal scale") axes[1].plot(x, x**2, x, np.exp(x)) axes[1].set_yscale("log") axes[1].set_title("Logarithmic scale (y)"); 
 
n = np.array([0,1,2,3,4,5]) 
In [47]:
fig, axes = plt.subplots(1, 4, figsize=(12,3)) axes[0].scatter(xx, xx + 0.25*np.random.randn(len(xx))) axes[0].set_title("scatter") axes[1].step(n, n**2, lw=2) axes[1].set_title("step") axes[2].bar(n, n**2, align="center", width=0.5, alpha=0.5) axes[2].set_title("bar") axes[3].fill_between(x, x**2, x**3, color="green", alpha=0.5); axes[3].set_title("fill_between"); 
 
 

Using Numpy

In [17]:
x = np.linspace(0, 2*np.pi, 100) y =np.sin(x) plt.plot(x,y) 
Out[17]:
[<matplotlib.lines.Line2D at 0x579aef0>]
 
In [24]:
x= np.linspace(-3,2, 200) Y = x ** 2 - 2 * x + 1. plt.plot(x,Y) 
Out[24]:
[<matplotlib.lines.Line2D at 0x6ffb310>]
 
In [32]:
# plotting multiple plots
x =np.linspace(0, 2 * np.pi, 100) y = np.sin(x) z = np.cos(x) plt.plot(x,y) plt.plot(x,z) plt.show() # Matplot lib picks different colors for different plot. 
 
In [35]:
cd C:\Users\tk\Desktop\Matplot 
 
C:\Users\tk\Desktop\Matplot
In [39]:
data = np.loadtxt('numpy.txt') plt.plot(data[:,0], data[:,1]) # plotting column 1 vs column 2 # The text in the numpy.txt should look like this # 0 0 # 1 1 # 2 4 # 4 16 # 5 25 # 6 36 
Out[39]:
[<matplotlib.lines.Line2D at 0x740f090>]
 
In [56]:
data1 = np.loadtxt('scipy.txt') # load the file print data1.T for val in data1.T: #loop over each and every value in data1.T plt.plot(data1[:,0], val) #data1[:,0] is the first row in data1.T # data in scipy.txt looks like this: # 0 0 6 # 1 1 5 # 2 4 4 # 4 16 3 # 5 25 2 # 6 36 1 
 
[[  0.   1.   2.   4.   5.   6.]
 [  0.   1.   4.  16.  25.  36.]
 [  6.   5.   4.   3.   2.   1.]]
 
 

Scatter Plots and Bar Graphs

In [64]:
sct = np.random.rand(20, 2) print sct plt.scatter(sct[:,0], sct[:,1]) # I am plotting a scatter plot. 
 
[[ 0.51454542  0.61859101]
 [ 0.45115993  0.69774873]
 [ 0.29051205  0.28594808]
 [ 0.73240446  0.41905186]
 [ 0.23869394  0.5238878 ]
 [ 0.38422814  0.31108919]
 [ 0.52218967  0.56526379]
 [ 0.60760426  0.80247073]
 [ 0.37239096  0.51279078]
 [ 0.45864677  0.28952167]
 [ 0.8325996   0.28479446]
 [ 0.14609382  0.8275477 ]
 [ 0.86338279  0.87428696]
 [ 0.55481585  0.24481165]
 [ 0.99553336  0.79511137]
 [ 0.55025277  0.67267026]
 [ 0.39052024  0.65924857]
 [ 0.66868207  0.25186664]
 [ 0.64066313  0.74589812]
 [ 0.20587731  0.64977807]]
Out[64]:
<matplotlib.collections.PathCollection at 0x78a7110>
 
In [65]:
ghj =[5, 10 ,15, 20, 25] it =[ 1, 2, 3, 4, 5] plt.bar(ghj, it) # simple bar graph 
Out[65]:
<Container object of 5 artists>
 
In [74]:
ghj =[5, 10 ,15, 20, 25] it =[ 1, 2, 3, 4, 5] plt.bar(ghj, it, width =5)# you can change the thickness of a bar, by default the bar will have a thickness of 0.8 units 
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值