使用Pandas对销售数据进行分析

        第一步:查看数据集data.txt的数据构成,我们发现其数据有四列构成,分别代表的是年、月、以及两组销售数据。数据是和时间相关联的。因此我们以时间为索引,转换其数据结构将方便我们的分析

        第二步:构建convert_data_to_timeseries函数,该函数目的是将原始数据中的某地销售数据转换为Series结构,其索引为年月构成的时间,因为Series强大的功能方便我们进行统计。问题一:完善代码实现convert_data_to_timeseries函数功能,在这之前请先熟悉data_range函数的使用方式data_range函数会返回一个时间索引。

def convert_data_to_timeseries(input_file, column, verbose=False):
    # 导入数据
    data = np.loadtxt(input_file, delimiter=',')
    # 确定索引的开始与结束时间
    start_date = str(int(data[0,0])) + '-' + str(int(data[0,1]))
    end_date = str(int(data[-1,0] + 1)) + '-' + str(int(data[-1,1] % 12 + 1))
    ###问题一:完善函数###
    ###提示:通过pandas的date_range函数获取索引###
    # 切取指定列数据
    data_column = data[:, column]
    # 获取时间索引
    data_time_index = pd.date_range(start_date, end_date, freq='M')
    # 将指定列转换为Series
    data_timeseries = pd.Series(data_column, data_time_index)
    return data_timeseries
        第三步: 查看数据,将A地(第三列)数据成图,查看其是否存在某种趋势。
file = "./data.txt"
# 获取第三列数据
data_timeseries = convert_data_to_timeseries(file, 2)

###STEP3###
# Plot方法成图
data_timeseries.plot()
plt.title('Input data')
# 图像太密集了,我们换一个时间范围
start = '2007-2'
end = '2007-11'
plt.figure()
data_timeseries[start:end].plot()
plt.title('Data from ' + start + ' to ' + end)
plt.show()

        第四步:  加入第二组销售数据,将两组Series数据转化为二维数据结构 DataFrame,索引为时间,DataFrame结构会利于我们的比较。
# 获取第三列数据
column3 = convert_data_to_timeseries(file, 2)
# 获取第四列数据
column4 = convert_data_to_timeseries(file, 3)
# 将第三列第四列数据存入字典
dict_data = {"first": column3, "second": column4}
# 将第三、四列转换为二维数据结构dataframe
dataframe = pd.DataFrame(dict_data)
# 获取日期
index_time = convert_data_to_timeseries(file, 0)
# 设置日期为索引
dataframe.set_index(index_time)
# 将两组数据同时成图
dataframe['1955':'1960'].plot()
plt.title('Data overlapped on top of each other')
         第五步: 查看数据,将AB地数据成图,查看两组数据否存在相同趋势。
# 查看两组数据是否有线性关联
plt.figure()
difference = dataframe['1952':'1955']['first'] - dataframe['1952':'1955']['second']
difference.plot()
plt.title('Difference (first - second)')
plt.show()

 

         第六步: 从图像中似乎没发现数据的规矩,我们希望借助统计学来观测,问题三:分别计算两组数据的最大最小值,平均值,以及相关系数。
###问题三:请统计两组数组的最大最小值和均值###
###问题三:计算数据的相关系数,调用corr函数###
min_first = dataframe['1952':'1955']['first'].min()
min_second = dataframe['1952':'1955']['second'].min()
max_first = dataframe['1952':'1955']['first'].max()
max_second = dataframe['1952':'1955']['second'].max()
mean_first = dataframe['1952':'1955']['first'].mean()
mean_second = dataframe['1952':'1955']['second'].mean()
# 计算数据的相关系数
corr_data = dataframe.corr()
# print(corr_data)
         第七步: 将其相关系数的变化成图。
# 打印两组数据相关性
plt.figure()
# 该方法已弃用
# pd.rolling_corr(dataframe['first'], dataframe['second'], window=60).plot()
dataframe['first'].rolling(60).corr(dataframe['second']).plot()
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值