使用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维数组,索引,数组切片,整数索引,数组转换,通用函数,使用数组处理数据,常用的统计方法,等等。
Index Numpy 遇到Numpy陌生函数,查询用法,推荐!
Pandas
Pandas包含了高级的数据结构和操作工具,它们使得Python数据分析更加快速和容易。
教程包含了series, data frams,从一个axis删除数据,缺失数据处理,等等。
Index Pandas 遇到陌生函数,查询用法,推荐!
Matplotlib
这是一个分为四部分的Matplolib教程。
1st 部分:
第一部分介绍了Matplotlib基本功能,基本figure类型。
Simple Plotting example
%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
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()
Using Numpy
x = np.linspace(0, 2*np.pi, 100) y =np.sin(x) plt.plot(x,y)
x= np.linspace(-3,2, 200) Y = x ** 2 - 2 * x + 1. plt.plot(x,Y)
# 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.
cd C:\Users\tk\Desktop\Matplot
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
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
Scatter Plots and Bar Graphs
sct = np.random.rand(20, 2) print sct plt.scatter(sct[:,0], sct[:,1]) # I am plotting a scatter plot.
ghj =[5, 10 ,15, 20, 25] it =[ 1, 2, 3, 4, 5] plt.bar(ghj, it) # simple bar graph
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