Python 代码未显示所需的输出但继续运行
Posted
技术标签:
【中文标题】Python 代码未显示所需的输出但继续运行【英文标题】:Python code does not show the desired output but keeps running 【发布时间】:2021-10-31 05:23:39 【问题描述】:我正在学习 Laura Igual 的《数据科学导论》一书。
每当我尝试执行此代码时,我的 jupyter 笔记本都会一直显示“[*]”,但从未显示所需的输出。甚至我的笔记本电脑也开始变慢并变得不稳定。该文件是一个包含 26 列和 10000 行的 CSV 文件。是不是文件太大了?
import pandas as pd
import numpy as np
file_name = r"ACCIDENTS_GU_BCN_2013.csv"
file = open(file_name, "r")
data = pd.read_csv(file)
data['Date']= data[u'Dia de mes'].apply(lambda x: str(x))+'-'+
data[u'Mes de any'].apply(lambda x: str(x))
data['Date'] = pd.to_datetime(data['Date'])
accidents = data.groupby(['Date']).size()
print(accidents.mean())
【问题讨论】:
【参考方案1】:最好的应用是完全不应用。使用矢量化代码:
data['Date'] = data['Dia de mes'].astype('str') + '-' data['Mes de any'].astype('str')
您也可以将 u 前缀放到字符串中。它们在 Python 2 中是必需的,表示 Unicode 字符串。 Python 3 使它们变得多余,因为默认情况下所有字符串都是 Unicode。
什么是矢量化代码?
简单地说,向量化代码是自动将操作映射到数组的每个元素的代码。假设您有一个数字列表,并且您想为每个元素加 1:
# Regular Python
a_list = [1, 2, 3, 4]
for i in range(len(a_list)):
a_list[i] += 1
# Vectorized code
import numppy as np
an_array = np.array([1, 2, 3, 4])
an_array += 1
除了更简洁之外,向量化代码对于长数组也快很多,因为它使用高度优化的 C 循环而不是原生 Python 循环。 Python 并不是一种以其性能而闻名的语言。
矢量化代码在 pandas / numpy 中无处不在。了解如何有效地使用它们。
【讨论】:
【参考方案2】:我没有重现您的错误的数据,但您正在应用方法中运行另一个应用方法。这意味着对于每一行,每隔一行运行另一种方法。这意味着像 10000x10000 次迭代,这是巨大的。
代替这一行:
data['Date']= data[u'Dia de mes'].apply(lambda x: str(x)+'-'+
data[u'Mes de any'].apply(lambda x: str(x)))
你可以这样做:
data['Date'] = data.apply(lambda row: str(row[u'Dia de mes'])+'-'+str(row[u'Mes de any']), axis=1)
它只将 lambda 函数应用于所有行一次。
【讨论】:
以上是关于Python 代码未显示所需的输出但继续运行的主要内容,如果未能解决你的问题,请参考以下文章
通过 xsl 将 XML 转换为 HTML 会导致以下问题:xsl 中的关键函数未提供所需的输出