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行的

相关文章
|
2月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
214 0
|
3月前
|
数据采集 监控 Java
Python 函数式编程的执行效率:实际应用中的权衡
Python 函数式编程的执行效率:实际应用中的权衡
267 102
|
2月前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
200 6
|
2月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
238 0
|
3月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
253 0
|
3月前
|
存储 程序员 数据处理
Python列表基础操作全解析:从创建到灵活应用
本文深入浅出地讲解了Python列表的各类操作,从创建、增删改查到遍历与性能优化,内容详实且贴近实战,适合初学者快速掌握这一核心数据结构。
438 0
|
3月前
|
中间件 机器人 API
Python多态实战:从基础到高阶的“魔法”应用指南
Python多态机制通过“鸭子类型”实现灵活接口,使不同对象统一调用同一方法,自动执行各自行为。它简化代码逻辑、提升扩展性,适用于数据处理、策略切换、接口适配等场景。掌握多态思维,能有效减少冗余判断,使程序更优雅、易维护。
205 0
|
3月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍了基于Python的剪贴板监控技术,结合clipboard-monitor库实现高效、安全的数据追踪。内容涵盖技术选型、核心功能开发、性能优化及实战应用,适用于安全审计、自动化办公等场景,助力提升数据管理效率与安全性。
168 0
|
4月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍如何利用Python的clipboard-monitor库实现剪贴板监控系统,涵盖文本与图片的实时监听、防重复存储、GUI界面开发及数据加密等核心技术,适用于安全审计与自动化办公场景。
179 0
|
4月前
|
数据采集 API 调度
Python爬虫框架对比:Scrapy vs Requests在API调用中的应用
本文对比了 Python 中 Scrapy 与 Requests 两大爬虫框架在 API 调用中的差异,涵盖架构设计、调用模式、性能优化及适用场景,并提供实战建议,助力开发者根据项目需求选择合适工具。

推荐镜像

更多