这段代码报错的原因是在使用pd.read_csv函数读取文件时,文件路径不正确。根据代码中的文件路径,应该将文件放在e:/pydata/目录下。另外,data3的数据来源是一个Excel文件,需要将文件后缀修改为.xlsx

以下是能够运行的代码:

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.width', None)
plt.rcParams['font.sans-serif'] = 'simhei'
plt.rcParams['font.size'] = 15

data1 = pd.read_csv('e:/pydata/supermarket.csv')
data2 = pd.read_csv('e:/pydata/region.txt', sep='	')
data3 = pd.read_excel('e:/pydata/category.xlsx', sheet_name='Sheet1')

data = pd.merge(data1, data2, how='outer', on='省')
data = pd.merge(data, data3, how='outer', on='子类别')

print('数据的行数= %d
数据的列数= %d' % (data.shape[0], data.shape[1]))
print('数据的前5行为: 
', data.head())
print(data['利润率'].head(3))

data['利润率'] = data['利润率'].apply(lambda x: x.replace('%', ''))
data['利润率'] = data['利润率'].astype('float') / 100
print(data['利润率'].head(3))

data = data.drop_duplicates(subset=['订单ID', '产品ID', '客户ITD'], keep='first')
print('去重后的行数=', data.shape[0])
print(data[['发货日期', '订单日期']].dtypes)

data['发货日期'] = pd.to_datetime(data['发货日期'])
data['订单日期'] = pd.to_datetime(data['订单日期'])
print(data[['发货日期', '订单日期']].dtypes)

data['年'] = data['订单日期'].dt.year
data['月'] = data['订单日期'].dt.month
print(data[['订单日期', '年', '月']][:5])

group_result1 = data.groupby(by='产品名称')['销售额'].sum()
group_result1 = group_result1.sort_values(ascending=False)
print('销售金额排名的前5的产品:
', group_result1.head())

group_result2 = data.groupby(by='年')['利润'].sum()
print('每年的利润为: 
', group_result2)

loc_result = data.loc[(data['年'] == 2016) & (data['地区'] == '中南') & (data['类别'] == '办公用品')]
mean = loc_result['利润'].sum() / 12
mean = round(mean, 2)
print('2016年中南地区办公用品的平均每月利润为: ', mean)

years = group_result2.index
values = group_result2
n = len(values)
hb_lists = []
for i in range(n):
    if i == 0:
        hb = 0
    else:
        hb = (values.iloc[i] - values.iloc[i - 1]) / values.iloc[i - 1]
    print('%d年的环比=%.2f%%' % (years[i], hb * 100))

import numpy as np

tab1 = pd.crosstab(index=data['子类别'], columns=data['地区'])
print('不同地区的不同类别的订单频数
', tab1)

tab2 = pd.pivot_table(data, index='子类别', columns='地区', values='销售额', aggfunc=np.mean)
tab2 = round(tab2, 0)
print('不同地区的不同类别的销售额平均值
', tab2)

plt.rcParams['figure.figsize'] = (8, 6)
result1 = data.groupby(by='地区')['销售额'].mean()
result1_mean = data['销售额'].mean()
y = result1.index
width = result1
height = 0.3
plt.barh(y, width, height)
plt.title('不同类别的平均销售额')
plt.axvline(result1_mean, color='r', linestyle=':')
plt.show()

plt.rcParams['figure.figsize'] = (10, 8)
fig, axes = plt.subplots(3, 1)
ax = axes.ravel()
y = ['销售额', '利润', '利润率']
names = ['平均销售额', '平均利润', '平均利润率']
for i, j, k in zip(range(3), y, names):
    result2 = data.groupby(by='月')[j].mean()
    x = result2.index
    y = result2
    ax[i].bar(x, y, color='skyblue')
    ax[i].plot(x, y, color='brown', linestyle='--')
    ax[i].set_ylabel(k)
    ax[i].set_xticks(np.arange(1, 13))
plt.show()

result3 = data.groupby(by='邮寄方式')['利润'].sum()
c = ['darkorange', 'yellowgreen', 'skyblue', 'lightyellow']
patches, text1, text2 = plt.pie(x=result3, labels=result3.index, autopct='%.1f%%', colors=c, radius=1)
for i in text1:
    i.set_size(20)
    i.set_color('red')
for i in text2:
    i.set_size(16)
    i.set_color('darkgreen')
plt.pie(x=[1], colors='w', radius=0.6)
plt.title('不同邮政方式的利润和', color='b')
plt.show()
Pandas 数据分析代码报错:文件路径错误及文件类型修正

原文地址: https://www.cveoy.top/t/topic/pj1d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录