• 用pandas处理数据时,使变量能够在不同的Notebook会话页面进行传递,魔法命令%store


    【需求来源】

    在使用pandas时,有的时候我想将.ipynb文件分开写

    • 其中一个写清洗数据代码
    • 另外一个写数据可视化代码

    【解决方案】

    但是会涉及到变量转移问题,这个时候我通常使用的方法是:

    1、在清洗完数据后导出到本地
    2、在文件后面增加当前时间戳
    3、使用%store魔法命令保存这个时间变量
    4、然后去数据可视化的.ipynb文件读取这个带有时间变量的文件名

    【代码实现】

    Notebook1: 清洗数据.ipynb

    import datetime
    ***************
    ***************
    ***************
    
    # 获取当前时间
    now_time = datetime.datetime.now().strftime('%Y-%m-%d %H-%M')
    
    # 导出文件至本地,同时带时间后缀
    df.to_excel(f'./全球数据{now_time}.xlsx',index=False)
    
    # 同步保存变量,准备给文件2使用
    %store now_time
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Notebook2:数据可视化.ipynb

    import pandas as pd
    import matplotlib.pyplot as plt
    
    # 读取文件1的变量
    %store -r now_time
    
    # 通过文件路径,读取文件
    df = pd.read_excel(f'./全球数据{now_time}.xlsx')
    
    '下面就可以放肆的在文件2画图了,在画图的时候记得提前运行一下代码解决中文和负号影响的问题'
    
    plt.rcParams['font.sans-serif']='Microsoft YaHei'# 显示中文
    plt.rcParams['axes.unicode_minus'] = False # 消除中文负号影响
    plt.rcParams['font.size'] = 8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    【方法优化】来源于ChatGPT给出的解决方案

    使用%store命令来存储变量会保持到你关闭当前的Jupyter Notebook会话为止。一旦关闭了Notebook,存储的变量将会被释放,除非你再次打开Notebook并使用%store命令来恢复它们。
    如果你希望将变量持久化保存,以便在不同的Notebook会话之间都能访问到,你可以考虑将变量存储在文件中,然后在需要的时候从文件中读取。这种方式可以长期保存变量的值。例如:

    # 将变量保存到文件中
    with open('my_variable.txt', 'w') as file:
        file.write(str(my_variable))
    
    # 从文件中读取变量的值
    with open('my_variable.txt', 'r') as file:
        my_variable = file.read()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这样做可以在不同的Notebook会话之间保持变量的值。不过要确保你保存的文件路径是可访问的,并且注意保护敏感数据。

  • 相关阅读:
    《windows核心编程》第3章 内核对象
    0递归中等 LeetCode306. 累加数
    关于netty的一些你需要知道的内容(超简单)
    SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式
    9 万字 208 道 Java 经典面试题总结 (附答案), 看到就是赚到
    平替ChatGPT的多模态智能体来了
    黑马C++ 02 核心 4 ——类和对象_C++对象模型和this指针_友元
    电容笔好还是触控笔好?超实惠电容笔排行
    useReducer+createContext真的可以代替Redux吗?
    [CSS]CSS 的背景
  • 原文地址:https://blog.csdn.net/weixin_47744974/article/details/133611749