寒假学习Day 2:Python数据分析

发布时间:2024-02-08 12:00

寒假学习Day 2:Python数据分析

今天主要是进行了python数据分析的相关学习,以2020年美赛C题的数据为着手点进行了实际操作
2020年美赛C题题目+翻译https://blog.csdn.net/qq_41618424/article/details/104690600?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161120225416780265452554%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161120225416780265452554&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-104690600.first_rank_v2_pc_rank_v29&utm_term=2020%E5%B9%B4%E7%BE%8E%E8%B5%9BC%E9%A2%98&spm=1018.2226.3001.4187

用到的库

import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
import numpy as np
import sys
import time 
import hmac
import jieba
import json
import uuid
import base64
import urllib
import random
import hashlib
import requests
import datetime
import http.client
import urllib.parse
import urllib.request
from imp import reload
import csv
import re
import seaborn as sns
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from imageio import imread
from IPython.display import Image
from IPython import display
import imageio

导入数据

这个题的数据一共有三个,分别是吹风机,微波炉和奶嘴,这里我选择试试微波炉的数据

data=pd.read_csv('microwave.tsv',sep='\t')
data

一共得到了1615行,15列数据
寒假学习Day 2:Python数据分析_第1张图片

分析数据的列标签分别都是什么

列标签 含义
marketplace 超市地址,应该都是US
customer_id 消费者id
review_id 评价id
product_id 产品id
product_parent 产品专利权
product_title 产品标题
product_category 产品类别
star_rating 星级
helpful_votes 帮助评分
total_votes 总共的选票
vine 藤(?)
verified_purchase 确认购买
review_headline 评论标题
review_body 评论主体
review_date 评论时间

问题一

Analyze the three product data sets provided to identify, describe, and support with mathematical evidence, meaningful quantitative and/or qualitative patterns, relationships, measures, and parameters within and between star ratings, reviews, and helpfulness ratings that will help Sunshine Company succeed in their three new online marketplace product offerings.

这段文字,直接用机翻翻译出来的句子非常拗口且难懂,我自己看了很多遍还是感觉很莫名其妙,后来求助了英语比较好的同学之后大概明白了一些,应该是需要对题中所给的数据中的star ratings,reviews,helpfulness ratings 进行相关分析,最后得到产品上线后取得成功的概率。

产品的reviews都是文字,这需要情感分析,所以我决定最后再分析这一块的影响,先分析start rating

先把整个数据里的start_rating画出来瞧瞧

plt.rcParams['font.sans-serif'] = ['KaiTi']#设置字体防止乱码
plt.rcParams['font.serif'] = ['KaiTi']
need= ['marketplace','star_rating','product_id']
data2= data[need]#获取需要的数据
regions = set(data2['marketplace'])#获取所有区域名称
for item in regions:#分别获取一个区域内的所有产品信息
    plt.figure()#画图
    d= data2[data2['marketplace'] == item]
    sns.barplot(d['product_id'],d['star_rating'])
    plt.xticks(rotation='vertical')#设置横坐标数据方向
    plt.ylabel("star_rating")
    plt.xlabel("product_id")
    plt.title('{} is star_rating '.format(item))
    plt.savefig(f"{item}is star_rating.png")#保存图片
    plt.show()#图片展示

寒假学习Day 2:Python数据分析_第2张图片
寒假学习Day 2:Python数据分析_第3张图片
可以看出 数据非常多

接下来打算统计star rating 分别为1,2,3 ,4 ,5的占比如何

count = data.loc[:, 'star_rating'].value_counts()
print(count)

寒假学习Day 2:Python数据分析_第4张图片
将数据化成饼状图

labels=['1','2','3','4','5']
sizes=[402,112,134,300,667]
plt.figure()#画饼图
explode =[0.05,0,0,0,0,0,0,0,0,0]
patches,l_text,p_text = plt.pie(x=sizes,labels=labels,autopct='%1.f%%')
plt.axis('equal')
for t in l_text:#设置字符尺寸
    t.set_size = 130
for t in p_text:
    t.set_size = 120
plt.legend(loc='upper left',bbox_to_anchor=(-0.1, 1))#设置图标位置
plt.savefig("star_rating.png")#保存图片
plt.grid()
plt.show()

寒假学习Day 2:Python数据分析_第5张图片
然而画出来之后还是感觉很茫然

突然想到分析两个及两个以上变量之间的关系可以用回归分析,就想到了决策树的回归树,决定先把reviews,helpfulness ratings不太好分析的数据转化成好分析的数据
由于今天太晚了,这段数据分析明天再分析吧
先画个词云看看 review_headline

yuni=''
data1=data['review_headline']
for i in range(1615):
    data1=str(data1)
    s_list=list(jieba.cut(data1))
    for i in s_list:
        yuni+=i+' '
cloud=WordCloud(background_color='white',max_words=200,font_path='C:\Windows\Fonts\simfang.ttf',max_font_size=100).generate(yuni)
plt.imshow(cloud,interpolation="bilinear")
plt.axis('off')
plt.show()
cloud.to_file('review.png')#保存图片

寒假学习Day 2:Python数据分析_第6张图片
再看看review_body

yuni=''
data1=data['review_body']
for i in range(1615):
    data1=str(data1)
    s_list=list(jieba.cut(data1))
    for i in s_list:
        yuni+=i+' '
cloud=WordCloud(background_color='white',max_words=200,font_path='C:\Windows\Fonts\simfang.ttf',max_font_size=100).generate(yuni)
plt.imshow(cloud,interpolation="bilinear")
plt.axis('off')
plt.show()
cloud.to_file('review.png')#保存图片

寒假学习Day 2:Python数据分析_第7张图片

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号