import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import re
import jieba
from wordcloud import WordCloud
from imageio import imread
import warnings
sns.set(style="darkgrid")
mpl.rcParams["font.family"] = "SimHei"
mpl.rcParams["axes.unicode_minus"] = False
warnings.filterwarnings("ignore")
df = pd.read_csv("笔记本电脑.csv", engine=‘python‘, encoding=‘utf-8-sig‘, header=None)
df.columns = ["描述信息", "价格", "付款人数", "旗舰店", "发货地址"]
df.head()
# 去重之前的记录数
print("去重之前的记录数",df.shape)
# 记录去重
df.drop_duplicates(subset=["描述信息","价格"],inplace=True)
# 去重之后的记录数
print("去重之后的记录数",df.shape)
# df["付款人数"].unique()
def func1(x):
if x.find("万") != :
x = re.findall("(\d+)",x)[0]
return int(x) * 10000
else:
return int(re.findall("(\d+)",x)[0])
df["付款人数"] = df["付款人数"].apply(func1)
df.head()
def func2(x):
if x.find(" ") != -1:
return x.split(" ")[1]
else:
return x
df["发货地址"] = df["发货地址"].fillna({"发货地址":"无"})
df["发货地址"] = df["发货地址"].apply(func2)
df.head()
tar_cpu = [‘联想‘,‘惠普‘,‘酷睿‘,‘苹果‘,‘三星‘,‘华硕‘,‘索尼‘,‘宏碁‘,‘戴尔‘,‘海尔‘,‘长城‘,‘海尔‘,‘神舟‘,‘清华同方‘,‘方正‘,‘明基‘]
tar_cpu = np.array(tar_cpu)
def rename(x):
index = [i in x for i in tar_cpu]
if sum(index) > 0:
return tar_cpu[index][0]
else:
return "牌子不详"
df["电脑品牌"] = df["描述信息"].apply(rename)
df.head()
# 不同电脑品牌的销量
x = df["电脑品牌"].value_counts().reset_index()
x = x.drop(df.index[1], axis=0) # 注意这种用法
x.index = np.arange(1,len(x)+1)
x
x = "【酷睿i5+指纹解锁】2020款全新15.6英寸i5笔记本电脑游戏本超薄手提电脑学生办公用商务轻薄便携粉色女生款"
# list(jieba.cut(x))
add_word = [‘联想‘,‘惠普‘,‘酷睿‘,‘苹果‘,‘三星‘,‘华硕‘,‘索尼‘,‘宏碁‘,‘戴尔‘,‘海尔‘,‘长城‘,‘海尔‘,‘神舟‘,‘清华同方‘,‘方正‘,‘明基‘]
for i in add_word:
jieba.add_word(i)
df["切分后的描述信息"] = df["描述信息"].apply(lambda x:jieba.lcut(x))
df.head()
with open("stoplist.txt", encoding="utf8") as f:
stop = f.read()
stop = stop.split()
stop = [" ","笔记本电脑"] + stop
stop[:10]
[‘ ‘, ‘笔记本电脑‘, ‘\ufeff‘, ‘说‘, ‘人‘, ‘元‘, ‘hellip‘, ‘&‘, ‘,‘, ‘?‘]
df["切分后的描述信息"] = df["切分后的描述信息"].apply(lambda x: [i for i in x if i not in stop])
df.head()
all_words = []
for i in df["切分后的描述信息"]:
for j in i:
all_words.extend(i)
word_count = pd.Series(all_words).value_counts()
print(word_count[:20])
# 1、读取背景图片
back_picture = imread("aixin.jpg")
# 2、设置词云参数
wc = WordCloud(font_path="G:\\6Tipdm\\wordcloud\\simhei.ttf",
background_color="white",
max_words=2000,
mask=back_picture,
max_font_size=200,
random_state=42
)
wc2 = wc.fit_words(word_count)
# 3、绘制词云图
plt.figure(figsize=(16,8))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("电脑.png")
df.to_excel("清洗后的数据.xlsx",encoding="utf-8-sig",index=None)
df1 = df.sort_values(by="价格", axis=0, ascending=False)
df1 = df1.iloc[:10,:]
df1.to_excel("价格 排名前10的数据.xlsx",encoding="utf-8-sig",index=None)
df1
原文:https://www.cnblogs.com/James-221/p/13791960.html