利用Python进行数据分析(一)

一、IPython及Python基础

1、数据科学中的术语

规整: 将非结构化或者同时也很凌乱的数据整理成结构化、清晰形式的过程。
语法糖: 并不增加新特性,但有利于代码编写的编程语法。

2、IPython 基础

Tab补全

Tab 键自动补全代码(变量名)、库函数(datetime.<Tab>)、系统路径(/<Tab>)

内省

在一个变量名前后使用 ? 可以显示关于该对象的概要信息

a=[1,2,3];a?

output:

Type:        list
String form: [1, 2, 3]
Length:      3
Docstring:  
list() -> new empty list
list(iterable) -> new list initialized from iterable's items

%load

将脚本导入一个代码单元

#test.py
def f(x,y,z):
	return (x+y)/z
%load test.py

output:

def f(x,y,z):
	return (x+y)/z

执行剪贴板中的程序

%paste获得剪贴板中全部的文本,并作为一个代码块执行
%cpaste与之类似,但会提示让你粘贴代码,并以–结束

IPython快捷键

命令说明
Ctrl -P或上箭头键以当前输入内容开始,向后搜索历史命令
Ctrl-N或下箭头键以当前输入内容开始,向前搜索历史命令
Ctrl-R按行读取的反向历史搜索
Ctrl-Shift-v从剪贴板粘贴文本
Ctrl-C中止当前正在执行的代码
Ctrl-A将光标移动到行首
Ctrl-E将光标移动到行尾
Ctrl-K删除光标后本行的所有内容
Ctrl-U删除当前行
Ctrl-F将光标向前移动一个字符
Ctrl-b将光标向后移动一个字符
Ctrl-L清屏

IPython魔术命令

%timeit 可以检查一段Python语句执行的时间

import numpy as np
%timeit np.dot(a,a)
a=[1,2,3];

output:

2.51 µs ± 92.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

在这里插入图片描述
在这里插入图片描述

3、Python 语法基础

代码块缩进

Python使用缩进来表示一个代码块,而不是大括号。冒号表示缩进代码块的开始。单个代码块中的所有代码必须保持相同的缩进。

for x in array:
	if x<pivot:
		less.append(x)
	else:
		greater.append(x)

注释

# 开头
Ctrl+1 注释/反注释快捷键(Spyder)

函数和对象方法调用

result=f(a,b,c,d=5,e='foo')

变量和参数传递

a=[1,2,3]
b=a
a.append(4)
print(b)

result :

[1, 2, 3, 4]

此时ab 两个引用指向一个对象,赋值操作也被称为绑定 。
当将对象作为参数传给函数时,指向原始对象的新的本地变量就会被创建而无需复制,如果你将一个新的对象绑定到一个函数的内部变量上时,这种变更不会在上级范围中产生影响。因此,更换可变参数的内部值是可以做到的.

def append_element(lista,element):
    lista.append(element)

data=[1,2,3]
append_element(data,4)
print(data)

result :

[1, 2, 3, 4]

动态引用、强类型

Python中的对象引用并不涉及类型,以下操作是没有问题的:

a=5
type(a)
#int

a='foo'
type(a)
#str

类型信息是存储于对象自身之中的,如下操作会报错:

'5'+5
# TypeError: must be str, not int

了解对象的类型是十分重要的,可以使用 isinstance 函数来检查对象是否是一个类型的特定实例。

a=4;b=4.5;

isinstance(a,int)
#True

isinstance(a,(int,float))
#True

isinstance(b,(int,float))
#True

属性和方法

Python中的对象一般都会有属性(Python对象内部存储的其他对象)和方法(与对象内部对象有关的函数),属性和方法都可以用刑辱obj.attribute_name的语法进行调用。

a='foo'
a.<Press Tab>

导入

# Test.py
PI = 3.14159
def f(x):
	return x+2
def g(a,b):
    return a+b
import Test as t
from Test import PI as pi,g as gf
result=Test.f(5)
result=t.f(5)
result=gf(5,3)

比较运算

a=[1,2,3]
b=a
c=list(a)
a==b
# True
a is b
# True

a==c
# True
a is c
# False

可变对象与不可变对象

可变对象中包含的对象和值是可以被修改的,如:

a_list=['foo',2,[4,5]]
a_list[2]=(3,4)
a_list
# ['foo', 2, (3, 4)]

不可变对象不可以被修改:

a_tuple=(3,5,(4,5))
a_tuple[1]='four'
# TypeError: 'tuple' object does not support item assignment
可变对象不可变对象
列表、字典、 Numpy 数组字符串、元组

标量类型

类型描述
NonePython中的"null"值(只存在一个实例)
str字符串类型(3个单引号或者3个双引号可以保存多行字符串)
bytes原生ASCII字节
float双精度64位浮点数值(整数除法会自动转型为浮点数)
boolTrue或者False
int任意精度无符号整数(可以存储任意大小数字)

类型转换

s='3.14159'
fval=float(s)
# 3.14159
int(fval)
# 3
bool(fval)
# True
bool(0)
# False

日期和时间

datetime 模块提供了datetime、date和time类型,详见p48,。

from datetime import datetime,date,time
dt=datetime(2020,1,14,16,45,30)
dt.day
# 14
dt.minute
# 45
dt.date()
# datetime.date(2020, 1, 14)
dt.time()
# datetime.time(16, 45, 30)

控制流

if-elif-else 条件控制语句

a=-5;
if a>0:
    print("正")
elif a<0:
    print("负")
else:
    print(0)
# 负

for 循环
遍历一个集合或一个迭代器。

for x in range(5):
    print(x)
# 0
# 1
# 2
# 3
# 4

while 循环

x=4
while x>0:
	print(x)
	x-=1
# 4
# 3 
# 2
# 1

pass
pass 就是什么都不做,用于表示代码段中不需要执行任何操作或者作为还没有实现的代码占位符

a=-5;
if a>0:
    print("正")
elif a<0:
    # print("负")
    pass
else:
    print(0)
# 此时没有输出

三元表达式

# value=true-expr if condition else false-expr
x=5
'Non-Nagative' if x>=0 else 'Nagative'
# 'Non-Nagative'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值