python数据科学应用

简介: python数据科学应用

字符串

字符串常用方法

方法 使用说明
string[start: end :step] 字符串的切片
string.split 字符串分割
string.strip 删除首尾空白
string.rstrip 删除字符串右边空白
string.lstrip 删除字符串左边空白
string.index 返回子串首次出现的位置
string.replace 字符串替换
sep.join 将可迭代对象按sep分割符拼接为字符串
string.count 对字符串 的子串计数
string.find 返回子串首次出现位置
string.startwith 字符串是否以什么开头
string.endwith 字符串是否以什么结尾


使用字典对象


word_dict={}
for word in sentence.split():
    if word not in word_dict:
       word_dict[word]=1
    else:
       word_dict[word]+=1
for word in sentence.split():
    word_dict.setdefault(word,0)
    word_dict[word]+=1
word_dict=defaultdict(int)
for word in sentence.split():
    word_dict[word]+=1
    print word_dict


defaultdict作用:defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值

例如:作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0


遍历字典


for key,value in word_dict.items():
pirnt key,value
• 1
• 2
统计字典


from collections import Counter


使用字典的字典


from collections import defaultdict
user_movie_rating=defaultdict(lambda:defaultdict(int))
user_movie_rating[1][1]=4
user_movie_rating[1][2]=5


使用元组


元组是一种顺序容器对象,不可变,不允许插入操作


使用集合


Jaccard系数:



str_1=[dogs,chase,cats]
str_2=(dogs,hate,cats)
st_1_wrds=set(str_1.split())
st_2_wrds=set(str_2.split())
n1=len(st_1_wrds)
n2=len(st_2_wrds)
#找出集合共有词,并统计次数
cmn=st_1_wrds.intersection(st_2_wrds)
nocmn=len(st_1_wrds.intersection(st_2_wrds))
#找出集合不重复的词,并统计次数
unq=st_1_wrds.union(st_2_wrds)
nounq=len(st_1_wrds.union(st_2_wrds))
#计算相似度
similarity=nocmn/(1.0*nounq)


写一个列表


a.append(),a.pop()


from random import shuffle
#shuffle 对生成的随机打乱顺序
a=range(1,20)
shuffle(a)
a.sort()
a.reverse()


从另一个列表创建–列表推导


a=[1,2,-1,-2,3,4,-3,-4]
b=[pow(x,2) for x in a if x<0]
print b


使用迭代器


生成一个迭代器和生成器


使用可迭代对象


迭代器对象是从集合中第一个元素开始访问,知道所有元素被访问结束,迭代器只前不会后退,

基本方法:iter()和next()


list=[1,2,3,4]
it=iter(list) #创建迭代器对象
print(next(it)) #输出迭代器的下一个元素
out:1
print(next(it))
out:2


把一个类作为迭代器使用需要在类中实现两个方法_iter_()与_next_().

iter() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 next() 方法并通过 StopIteration 异常标识迭代的完成


生成器:使用yield语句而不是return语句返回结果,yield语句一次返回一个结果,在每个结果中间,挂起函数状态,以便下次重它离开的地方继续执行

生成器表达式:类似于列表推导,但是,生成器返回按产生结果的一个对象,而不是一次构建一个结果列表


装饰器


装饰器:它是一种函数的函数,因为装饰器传入的参数就是一个函数,通过实现各种功能来对这个函数的功能进行增强。特点:简洁

代码实现有无装饰器区别:

无装饰器:


from time import time, sleep
def fun_one():
    start = time()
    sleep(1)
    end = time()
    cost_time = end - start
    print("func one run time {}".format(cost_time))
def fun_two():
    start = time()
    sleep(1)
    end = time()
    cost_time = end - start
    print("func two run time {}".format(cost_time))
def fun_three():
    start = time()
    sleep(1)
    end = time()
    cost_time = end - start
    print("func three run time {}".format(cost_time))


使用装饰器:


def run_time(func):
    def wrapper():
        start = time()
        func()                  # 函数在这里运行
        end = time()
        cost_time = end - start
        print("func three run time {}".format(cost_time))
    return wrapper
@run_time
def fun_one():
    sleep(1)
@run_time
def fun_two():
    sleep(1)
@run_time
def fun_three():
    sleep(1)

带参数的装饰器


def logger(msg=None):
    def run_time(func):
        def wrapper(*args, **kwargs):
            start = time()
            func()                  # 函数在这里运行
            end = time()
            cost_time = end - start
            print("[{}] func three run time {}".format(msg, cost_time))
        return wrapper
    return run_time
@logger(msg="One")
def fun_one():
    sleep(1)
@logger(msg="Two")
def fun_two():
    sleep(1)
@logger(msg="Three")
def fun_three():
    sleep(1)
fun_one()
fun_two()
fun_three()


lambad,map,filter,zip,izip


数据分析(探索)


用图表分析单变量数据


data为单维x,target为y

方法:散点图,百分位,消除异常值


import numpy as np
from matplotlib.pylab import frange
import matplotlib.pyplot as plt
fill_data=lambda x:int(x.strip() or 0)
data=np.genfromtxt("president.txt",dtype=(int),converters={1:fill_data}delimier=[,])
x=data[:,0]
y=data[:,1]
plt.figure(1)
plt.title("")
plt.plot(x,y)
#百分位
perc_25=np.percentile(y,25)
#消除异常值
y_masked=np.ma.masked_where(y==0,y)
科普 pandas ix,iloc,loc区别


data=pd.Series(np.nan,index=[49,48,47,46,45,1,2,3,4,5])
data.iloc[:3]
49 nan
48 nan
47 nan
data.loc[:3]
data.ix[:3]


iloc[:3]读取前3行

loc[:3]读取索引为3之前的行

ix[:3]会先寻找索引为3的,如果没有再寻找位置为3行的

相关文章
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
73 20
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
22天前
|
人工智能 开发者 Python
Chainlit:一个开源的异步Python框架,快速构建生产级对话式 AI 应用
Chainlit 是一个开源的异步 Python 框架,帮助开发者在几分钟内构建可扩展的对话式 AI 或代理应用,支持多种工具和服务集成。
137 9
|
2月前
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
171 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
28天前
|
存储 SQL 大数据
Python 在企业级应用中的两大硬伤
关系数据库和SQL在企业级应用中面临诸多挑战,如复杂SQL难以移植、数据库负担重、应用间强耦合等。Python虽是替代选择,但在大数据运算和版本管理方面存在不足。SPL(esProc Structured Programming Language)作为开源语言,专门针对结构化数据计算,解决了Python的这些硬伤。它提供高效的大数据运算能力、并行处理、高性能文件存储格式(如btx、ctx),以及一致的版本管理,确保企业级应用的稳定性和高性能。此外,SPL与Java无缝集成,适合现代J2EE体系应用,简化开发并提升性能。
|
3月前
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践感悟####
本文作为一篇技术性文章,旨在深入探讨Python编程中设计模式的应用价值与实践心得。在快速迭代的软件开发领域,设计模式如同导航灯塔,指引开发者构建高效、可维护的软件架构。本文将通过具体案例,展现设计模式如何在实际项目中解决复杂问题,提升代码质量,并分享个人在实践过程中的体会与感悟。 ####
|
2月前
|
缓存 开发者 Python
深入探索Python中的装饰器:原理、应用与最佳实践####
本文作为技术性深度解析文章,旨在揭开Python装饰器背后的神秘面纱,通过剖析其工作原理、多样化的应用场景及实践中的最佳策略,为中高级Python开发者提供一份详尽的指南。不同于常规摘要的概括性介绍,本文摘要将直接以一段精炼的代码示例开篇,随后简要阐述文章的核心价值与读者预期收获,引领读者快速进入装饰器的世界。 ```python # 示例:一个简单的日志记录装饰器 def log_decorator(func): def wrapper(*args, **kwargs): print(f"Calling {func.__name__} with args: {a
56 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索未来编程:Python在人工智能领域的深度应用与前景###
本文将深入探讨Python语言在人工智能(AI)领域的广泛应用,从基础原理到前沿实践,揭示其如何成为推动AI技术创新的关键力量。通过分析Python的简洁性、灵活性以及丰富的库支持,展现其在机器学习、深度学习、自然语言处理等子领域的卓越贡献,并展望Python在未来AI发展中的核心地位与潜在变革。 ###
|
2月前
|
存储 缓存 算法
探索企业文件管理软件:Python中的哈希表算法应用
企业文件管理软件依赖哈希表实现高效的数据管理和安全保障。哈希表通过键值映射,提供平均O(1)时间复杂度的快速访问,适用于海量文件处理。在Python中,字典类型基于哈希表实现,可用于管理文件元数据、缓存机制、版本控制及快速搜索等功能,极大提升工作效率和数据安全性。
74 0

热门文章

最新文章

推荐镜像

更多