python代码中的IndentationError

时间:2016-03-12 05:52:46

标签: python

我正在尝试运行一个小的python代码进行数据挖掘并获得跟踪错误。

错误:

File "prediction.py", line 10
    data=pd.read_csv(file_name)
       ^
IndentationError: expected an indented block

我是初学者请帮忙。 我的代码:

    # Required Packages
    import csv
    import sys
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    from sklearn import datasets, linear_model

    # Function to get data
    def get_data(file_name):
    data = pd.read_csv(file_name)
    flash_x_parameter = []
    flash_y_parameter = []
    arrow_x_parameter = []
    arrow_y_parameter = []
    for x1,y1,x2,y2 in zip(data[‘flash_episode_number’],data[‘flash_us_viewers’],data[‘arrow_episode_number’],data[‘arrow_us_viewers’]):
    flash_x_parameter.append([float(x1)])
    flash_y_parameter.append(float(y1))
    arrow_x_parameter.append([float(x2)])
    arrow_y_parameter.append(float(y2))
    return flash_x_parameter,flash_y_parameter,arrow_x_parameter,arrow_y_parameter

    # Function to know which Tv show will have more viewers
    def more_viewers(x1,y1,x2,y2):
    regr1 = linear_model.LinearRegression()
    regr1.fit(x1, y1)
    predicted_value1 = regr1.predict(9)
    print predicted_value1
    regr2 = linear_model.LinearRegression()
    regr2.fit(x2, y2)
    predicted_value2 = regr2.predict(9)

    #print predicted_value1
    #print predicted_value2
    if predicted_value1 > predicted_value2:
    print "The Flash Tv Show will have more viewers for next week"
    else:
    print "Arrow Tv Show will have more viewers for next week"
    x1,y1,x2,y2 = get_data(‘input.csv’)
    #print x1,y1,x2,y2
    more_viewers(x1,y1,x2,y2)`

3 个答案:

答案 0 :(得分:1)

缩进在python中很重要。

您收到错误是因为您需要在函数定义的第10行缩进:

# Function to get data
def get_data(file_name):
    data = pd.read_csv(file_name)
    flash_x_parameter = []
    flash_y_parameter = []
    ...

答案 1 :(得分:1)

在python中你必须缩进任何嵌套块的代码,以便python可以识别属于全局代码,函数代码和任何内部块代码的内容:

def get_data(file_name):
    data = pd.read_csv(file_name)
    ....
global code again

答案 2 :(得分:0)

这应该处理缩进问题。请阅读PEP8 [docs]的文档。

  

每个缩进级别使用4个空格。

     

延续线应垂直对齐包裹的元素   使用Python的隐含线连接括号,括号和   支撑,或使用悬挂缩进[6]。使用悬挂缩进时   应考虑以下因素;应该没有任何争论   第一行和进一步的缩进应该用于清楚   将自己区分为延续线。

# Required Packages
import csv
import sys
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn
import datasets, linear_model

# Function to get data
def get_data(file_name):
    data = pd.read_csv(file_name)
    flash_x_parameter = []
    flash_y_parameter = []
    arrow_x_parameter = []
    arrow_y_parameter = []
    for x1, y1, x2, y2 in zip(data[‘flash_episode_number’], data[‘flash_us_viewers’], data[‘arrow_episode_number’], data[‘arrow_us_viewers’]):
        flash_x_parameter.append([float(x1)])
    flash_y_parameter.append(float(y1))
    arrow_x_parameter.append([float(x2)])
    arrow_y_parameter.append(float(y2))
    return flash_x_parameter, flash_y_parameter, arrow_x_parameter, arrow_y_parameter

# Function to know which Tv show will have more viewers
def more_viewers(x1, y1, x2, y2):
    regr1 = linear_model.LinearRegression()
    regr1.fit(x1, y1)
    predicted_value1 = regr1.predict(9)
    print predicted_value1
    regr2 = linear_model.LinearRegression()
    regr2.fit(x2, y2)
    predicted_value2 = regr2.predict(9)

    # print predicted_value1# print predicted_value2
    if predicted_value1 > predicted_value2:
        print "The Flash Tv Show will have more viewers for next week"
    else :
        print "Arrow Tv Show will have more viewers for next week"
    x1, y1, x2, y2 = get_data(‘input.csv’)# print x1, y1, x2, y2
    more_viewers(x1, y1, x2, y2)