Python数据分析script必备知识(一)

本文介绍了Python数据分析脚本中的20个实用技巧,包括重定向终端输出、获取当前文件夹、判断list是否为空、使用pandas修改Excel列、时间处理、异常处理等,旨在帮助提升数据分析效率。
摘要由CSDN通过智能技术生成

Python数据分析script必备知识(一)

1.重定向终端输出内容

使生成的结果移动到其他位置

# 重定向, 使生成的结果移动到其他位置
import sys

sys.stderr = sys.stdout

print(dir(sys))  # ,,,,,'__stderr__', '__stdin__', '__stdout__',,,,,,

# 使用场景:脚本上线时,想要把输出结果和错误记录保存成log,方便查看。
"""
stdout用于print()和状态表达式的结果输出,及input()的瞬时输出
"""
import sys
# 将当前默认输出路径保存为__str
__stout__ = sys.stdout
# 将后续print输出结果直接写入在对应的文件
sys.stdout = open('log_test.txt','a')

print('输出结果到log_test.txt文件里')

"""
stderr与stdout一样,用于重定向错误至某个文件

"""
# 将当前的错误输出结果错误为__stderr__
__stderr = sys.stderr
# 将后续的报错信息写入对应的文件中
sys.stderr = open('errorlog.txt','a')
import traceback

try:
    10/0
except:
    traceback.print_exc()

示图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vv9WfrH6-1679144450035)(Typora_image/001.png)]

2. 获取当前文件夹的方法

"""
获取当前文件夹的方法
"""

import os

# 获取当前文件所在位置的方法
print(os.path.abspath(__file__))
# 获取当前文件所在文件夹的方法
print(os.path.dirname(os.path.abspath(__file__)))
# 拼接路径,在当前文件所在文件夹位置下再加一个test文件夹
print(os.path.join(os.path.dirname(os.path.abspath(__file__)),'test'))
# 拼接路径,在当前文件所在文件夹位置下再加一个test.py文件
print(os.path.join(os.path.dirname(os.path.abspath(__file__)),'test.py'))

# 获取当前文件名
# 获取当前文件的文件名
print(os.path.basename(os.path.abspath(__file__)))
# 获取当前文件所在的文件夹的文件名
print(os.path.basename(os.path.dirname(os.path.abspath(__file__))))


# 创建递归文件夹  exist_ok =True 存在就不创建
# 在当前文件路径下创建和此脚本平行的文件夹B
os.makedirs('C',exist_ok=True)

# 获取当前文件路径和文件所在的文件夹名
folder_path,file_name = os.path.split(os.path.abspath(__file__))
# 当前文件夹路径
print(folder_path)
# 当前文件名
print(file_name)

示图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JzDcyo6u-1679144450037)(Typora_image/002.png)]

3.判断list为空的简便方法

"""
判断list为空的简便方法
"""

list1 = [1]
list2 = []

if list1:
    print('list1有数据')

if list2:
    pass
else:
    print('list2没数据')

示图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hgBqgyGY-1679144450038)(Typora_image/003.png)]

4.如何用一套脚本执行两套逻辑

"""
如何用一套脚本执行两套逻辑
"""

# 如果isONE为True,执行逻辑一;如果isONE为False,执行逻辑二
isONE = True

try:
    if isONE:
        print('执行逻辑一')
    else:
        print('执行逻辑二')
except:
    print('启动失败')

示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qXqkn6ai-1679144450042)(Typora_image/004.png)]

5.如何用pandas修改excel表里面某一列的值

"""
如何修改pandas某一列的值
"""
import pandas as pd


# 此次需要安装pandas和xlrd,openpyxk模块,尤其注意高版本的xlrd模块依旧支持读取.xls文件。
#  安装pandas包      pip install pandas   # 用0.25.3版本演示
# 网上推荐1.2.0版本   pip install xlrd ==1.2.0   执行此命令安装不上时,可以尝试用conda环境
# openpyxl安装      pip install openpyxl
file_path = r'./demo5.xlsx'
table = pd.read_excel(file_path)
#
# # 方式一
table['测试3'] = '5'
print(table)
print(table['测试3'].dtype)   # object

# 方法二
for i in range(len(table['测试4'])):
    table['测试4'][i] = '6'

print(table['测试4'].dtype)   # int64

# 或者
# for i in range(table.shape[0]):
#     table['测试4'][i] = '6'

# 方法二适合里面有不同情况,加if时用
file_path = r'demo5.1.xlsx'
table.to_excel(file_path,index=False)

示图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b84kx2zj-1679144450043)(Typora_image/005.png)]

6. DataFrame数组里面时间列有0的逻辑转换

"""
调整pandas里面是列的时间
"""
import os
import datetime
import pandas as pd

file_path = r'./demo6.xlsx'
a = pd.read_excel(file_path)
print(a)  # 可以看到生产日期这一列有三种格式
print(a['生产日期'].dtype)   # object

for i in range(len(a['生产日期'])):
    # 如果为0,修改为19000101
    if  a['生产日期'][i]== 0:
        a['生产日期'][i] = datetime.datetime.strptime('19000101','%Y%m%d')
    # 如果是8位,转成时间格式
    elif len(str(a['生产日期'][i])) == 8:
        temp = datetime.datetime.strptime(str(a['生产日期'][i]),'%Y%m%d')
        a['生产日期'][i] = pd.Timestamp(temp)
    # 本来就是%y-%m-%d %h:%m:%s'的,不做处理
    else:
        pass

file_path = r'./demo6.1.xlsx'
if
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今晚务必早点睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值