当前位置:   article > 正文

学习笔记:《用Python进行数据分析》之Python基础

学习笔记:《用Python进行数据分析》之Python基础
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. import seaborn as sns
  5. import statsmodels as sm

Jupyter Notebook使用 

Tab补全

使用Tab键可以提示补全任何对象和模块的方法和属性。

        

 除了补全命名、对象和模块属性,Tab还可以补全其它的。当输入看似文件路径时(即使是Python字符串),按下Tab也可以补全电脑上对应的文件信息:

  1. In [7]: datasets/movielens/<Tab>
  2. datasets/movielens/movies.dat datasets/movielens/README
  3. datasets/movielens/ratings.dat datasets/movielens/users.dat
  4. In [7]: path = 'datasets/movielens/<Tab>
  5. datasets/movielens/movies.dat datasets/movielens/README
  6. datasets/movielens/ratings.dat datasets/movielens/users.dat
自省

 在变量前后使用问号?,可以显示对象的信息(和help类似):

 也可以对函数使用:

 ?还有一个用途,就是像Unix或Windows命令行一样搜索IPython的命名空间。字符与通配符结合可以匹配所有的名字。例如,我们可以获得所有包含load的顶级NumPy命名空间:

  1. In [13]: np.*load*?
  2. np.__loader__
  3. np.load
  4. np.loads
  5. np.loadtxt
  6. np.pkgload
%run命令

在python中可以使用%run命令来运行python程序。假设有一个文件ipython_script_test.py

  1. def f(x, y, z):
  2. return (x + y) / z
  3. a = 5
  4. b = 6
  5. c = 7.5
  6. result = f(a, b, c)

可以如下运行:

 %run ipython_script_test.py

这段脚本运行在空的命名空间(没有import和其它定义的变量),因此结果和普通的运行方式python script.py相同。文件中所有定义的变量(import、函数和全局变量,除非抛出异常),都可以在IPython shell中随后访问:

  1. In [15]: c
  2. Out [15]: 7.5
  3. In [16]: result
  4. Out[16]: 1.4666666666666666

在Jupyter notebook中,你也可以使用%load,它将脚本导入到一个代码格中:

  1. >>> %load ipython_script_test.py
  2. def f(x, y, z):
  3. return (x + y) / z
  4. a = 5
  5. b = 6
  6. c = 7.5
  7. result = f(a, b, c)
魔术命令

IPython中特殊的命令(Python中没有)被称作“魔术”命令。这些命令可以使普通任务更便捷,更容易控制IPython系统。魔术命令是在指令前添加百分号%前缀。例如,可以用%timeit测量任何Python语句,例如矩阵乘法,的执行时间:

  1. In [20]: a = np.random.randn(100, 100)
  2. In [20]: %timeit np.dot(a, a)
  3. 10000 loops, best of 3: 20.9 µs per loop

 比较实用的是%%time,可以测量单元格运行的时间:

  1. %%time
  2. a = np.random.randn(100,100)

输出:

CPU times: total: 15.6 ms
Wall time: 27 ms
  • CPU times:显示用户时间和系统时间。用户时间是指代码实际运行的时间,系统时间是指操作系统为执行代码而花费的时间。
  • Wall time:显示从代码开始执行到结束的总时间,通常以秒为单位。

Python语法基础

直接使用赋值是引用

当在Python中创建变量(或名字),你就在等号右边创建了一个对这个变量的引用。考虑一个整数列表,假设将a赋值给一个新变量b,在有些方法中,这个赋值会将数据[1, 2, 3]也复制。在Python中,a和b实际上是同一个对象,即原有列表[1, 2, 3]。你可以在a中添加一个元素,然后检查b:

  1. In [8]: a = [1, 2, 3]
  2. In [9]: b = a
  3. In [10]: a.append(4)
  4. In [11]: b
  5. Out[11]: [1, 2, 3, 4]
 可变与不可变对象

Python中的大多数对象,比如列表、字典、NumPy数组,和用户定义的类型(类),都是可变的,意味着这些对象或包含的值可以被修改。其它的,例如字符串和元组,是不可变的:

  1. In [43]: a_list = ['foo', 2, [4, 5]]
  2. In [44]: a_list[2] = (3, 4)
  3. In [45]: a_list
  4. Out[45]: ['foo', 2, (3, 4)]
  5. In [46]: a_tuple = (3, 5, (4, 5))
  6. In [47]: a_tuple[1] = 'four'
  7. ---------------------------------------------------------------------------
  8. TypeError Traceback (most recent call last)
  9. <ipython-input-47-b7966a9ae0f1> in <module>()
  10. ----> 1 a_tuple[1] = 'four'
  11. TypeError: 'tuple' object does not support item assignment
 字符串

对于有换行符的字符串,可以使用三引号,’ ’ ’或 ” ” ”都行:

  1. c = """
  2. This is a longer string that
  3. spans multiple lines
  4. """

 字符串c实际包含四行文本,”””后面和lines后面的换行符。可以用count方法计算c中的新的行:

  1. In [55]: c.count('\n')
  2. Out[55]: 3

 字符串是一个序列的Unicode字符,因此可以像其它序列,比如列表和元组一样处理:

  1. In [64]: s = 'python'
  2. In [65]: list(s)
  3. Out[65]: ['p', 'y', 't', 'h', 'o', 'n']
  4. In [66]: s[:3]
  5. Out[66]: 'pyt'
转义字符
  1. In [67]: s = '12\\34'
  2. In [68]: print(s)
  3. 12\34

如果字符串中包含许多反斜杠,但没有特殊字符,这样做就很麻烦。幸好,可以在字符串前面加一个r,表明字符就是它自身:

  1. In [69]: s = r'this\has\no\special\characters'
  2. In [70]: s
  3. Out[70]: 'this\\has\\no\\special\\characters'
格式化输出

字符串对象有format方法,可以替换格式化的参数为字符串,产生一个新的字符串:

In [74]: template = '{0:.2f} {1:s} are worth US${2:d}'

要替换参数为这些格式化的参数,我们传递format方法一个序列:

  1. In [75]: template.format(4.5560, 'Argentine Pesos', 1)
  2. Out[75]: '4.56 Argentine Pesos are worth US$1'
时间和日期

Python内建的datetime模块提供了datetimedatetime类型。datetime类型结合了datetime,是最常使用的:

  1. In [102]: from datetime import datetime, date, time
  2. In [103]: dt = datetime(2011, 10, 29, 20, 30, 21)
  3. In [104]: dt.day
  4. Out[104]: 29
  5. In [105]: dt.minute
  6. Out[105]: 30

根据datetime实例,你可以用datetime提取出各自的对象:

  1. In [106]: dt.date()
  2. Out[106]: datetime.date(2011, 10, 29)
  3. In [107]: dt.time()
  4. Out[107]: datetime.time(20, 30, 21)

strftime方法可以将datetime格式化为字符串:

  1. In [108]: dt.strftime('%m/%d/%Y %H:%M')
  2. Out[108]: '10/29/2011 20:30'

strptime可以将字符串转换成datetime对象:

  1. In [109]: datetime.strptime('20091031', '%Y%m%d')
  2. Out[109]: datetime.datetime(2009, 10, 31, 0, 0)

当你聚类或对时间序列进行分组,替换datetimes的time字段有时会很有用。例如,用0替换分和秒:

  1. In [110]: dt.replace(minute=0, second=0)
  2. Out[110]: datetime.datetime(2011, 10, 29, 20, 0)

因为datetime.datetime是不可变类型,上面的方法会产生新的对象。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/894901
推荐阅读
相关标签
  

闽ICP备14008679号