数据分析师第二版

批量执行python文件

%run+文件名

%run ipython_script_test.py

is与==的区别

在这里插入图片描述
结果不同的原因是 is 对比内存地址,而==对比的是是内容,a与c内容相同,而list会改变地址
所以一个是True,一个是FALSE;

Unicode编码
str.encode('utf-8)编码
在这里插入图片描述
str.decode(‘utf-8’)解码
在这里插入图片描述

时间格式处理 strftime与strptime

#时间格式重新修改
from datetime import datetime,date,time
dt = datetime(2019,11,10,9,34,25)
#strftime
dt.strftime(’%m/%d/%Y %H/%m/%S’)
在这里插入图片描述
#字符串转变为时间格式
datetime.strptime(‘20190111’,’%Y%m%d’)
在这里插入图片描述

获取本地时间

import time
time.strftime(’%Y-%m-%d’,time.localtime())

序号迭代的方法

#常见的序号迭代方法
seq = [1,2,3,4]
len(seq)
for i in range(len(seq)):
val = seq[i]
print(val)
在这里插入图片描述

使用enumerate方创建一个字典

some_list = [‘foo’,‘bar’,‘baz’]
mapping = {}
for i,v in enumerate(some_list):
mapping[i] = v
print(mapping)
在这里插入图片描述

字典

#字典
dict1 = {1:‘aksdjalkj’,2:[‘1’,‘2’,3,‘4’]}
dict1[8] = [“2”,“5”]
dict1[9] = [“2”,“5”]
dict1[‘ddd’] = [“2”,“5”]
del dict1[‘ddd’] #快速删除
dict1.pop(9) #快速删除并返回删除的values
在这里插入图片描述

用序列创建字典

key_list = [1,2,3,4]
value_list = [‘a’,‘b’,‘c’,‘d’]
mapping = {}
for i,v in zip(key_list,value_list):
mapping[i] = v
print(mapping)
在这里插入图片描述

迭代器

可以减少编写循环时的代码量

strings =[‘a’,‘as’,‘bat’,‘car’,‘dove’,‘python’]
diedai = [i.upper() for i in strings if len(i)>2]
print(diedai)
在这里插入图片描述

map可以遍历列表高效生成集合

set可以显示对象中的内容

strings =[‘a’,‘as’,‘bat’,‘car’,‘dove’,‘python’]
set(map(len,strings))
在这里插入图片描述

Numpy作为高效数组的优势

list运行遍历所有元素*2

import numpy as np
import time

start = time.perf_counter() #开始时间
list_str = list(range(100000000))
my_list_str = [i*2 for i in list_str]
end = time.perf_counter()
print(‘程序运行时间:’,’%.10f’%(end - start),‘秒’)

numpy所有元素*2对比

start = time.perf_counter() #开始时间
arr_str = np.arange(100000000)
my_array_str = arr_str * 2
end = time.perf_counter()
print(‘程序运行时间:’,’%.10f’%(end - start),‘秒’)
在这里插入图片描述

numpy特性 切片后的数据重新赋值会连同被切片的数据一起修改

#基本索引和切片

arr = np.arange(8)
arr[3:5] = 31
arr_slice = arr[3:5]
arr_slice[1] = 12345
arr
在这里插入图片描述

通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数。你可以将 其看做简单函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器

计算数组中的元素的开根号

import numpy as np
arr = np.arange(10)
np.sqrt(arr)
#第二参数为out可选参数,可以选择将求出的结果输出到一个已有数组中,如果选择自己的作为OUT输出则相当于对原数组中的元素进行开平方
在这里插入图片描述

计算数组中元素e的幂次方,e是个常数约等于2.7182

np.exp(arr)
在这里插入图片描述

arr_1和arr_2逐位进行比较,选择最大值.重组数组

arr_1 = np.random.randn(8)
arr_2 = np.random.randn(8)
np.maximum(arr_1,arr_2)
在这里插入图片描述

分别返回数组元素的整数、小数部分

arr = np.random.randn(7)*7
X,Y = np.modf(arr)
在这里插入图片描述

一元函数

在这里插入图片描述

二元函数

在这里插入图片描述

4.3利用数组进行数据处理

利用数组表达式代替循环的做法被称为矢量化。

一般来说矢量化的数组运算比纯Python方式快一两个数量级(甚至更多) 尤其是数值运算

例子:

一组值(网格型)中计算函数

公式

思路:创建网格型数据需要用到np.meshgrid(两个数组的笛卡尔积内的元素的第一二个坐标分别放入两个矩阵中)

知识点:笛卡尔积:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员

(假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。)

笛卡尔积图示
笛卡尔积描述

arr = np.arange(-5,5,0.01)
Xs,Ys = np.meshgrid(arr,arr)
Xs
Ys
在这里插入图片描述

得到了Xs与Ys网格坐标数组,按照公式进行计算

Zs = np.sqrt(Xs2+Ys2) #公式
Zs #计算结果展示
在这里插入图片描述

将计算结果绘图

import matplotlib.pyplot as plt
plt.imshow(Zs,cmap=plt.cm.gray);plt.colorbar()
plt.title(“Image plot of x 2 + y 2 \sqrt{x^2 + y^2} x2+y2 for a grid of values”)
在这里插入图片描述

第五章 pandas

pd中有两种常用的数据结构

Series:类似一维数组

#使用字典可以快速创建 Serise
dict_text = {‘aaa’:1000,‘bbb’:2000,‘ccc’:3000}
obj2 = pd.Series(dict_text)
obj2.name = ‘dict_text’
obj2.index.name = ‘state’
print(obj2)

DataFrame:是一个表格型的数据结构

#建DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典
data = {‘state’: [‘Ohio’, ‘Ohio’, ‘Ohio’, ‘Nevada’, ‘Nevada’, ‘N evada’], ‘year’: [2000, 2001, 2002, 2001, 2002, 2003], ‘pop’: [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame =pd.DataFrame(data)

在算数方法中填充值

#创建数据样本
d1 = pd.DataFrame(np.arange(12).reshape((3,4)),columns = list(‘abcd’))
d2 = pd.DataFrame(np.arange(20).reshape((4,5)),columns = list(‘abcde’))
c22.sub(d2,fill_value = 0)
d1.rsub(d2,fill_value = 0)
在这里插入图片描述
带r的函数会将d1与d2的数据进行翻转
具体方法如下几种常用的算数计算
在这里插入图片描述

fill_value会使用d2的数据对空值进行补齐

d1.rsub(d2,fill_value = 0)
在这里插入图片描述

描述和汇总统计

在这里插入图片描述

Series一些特殊的方法

在这里插入图片描述

pandas读取

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值