예제 #1
0
import pandas as pd
from matplotlib import pyplot as plt
from common import utils as u
import numpy as np

# %%
file_path = r'D:\file\DataAnalysis\douyin.zip'
df = pd.read_csv(file_path)
# %%
# print(df.head())
print(df.shape)
print(u.show_info(df))

# %%
print(u.show_na(df))

# %%
print(u.show_duplicated(df))

# %%
print(df.columns)
# %%
df.rename(columns={'Unnamed: 0': 'id'}, inplace=True)
df['real_time'] = pd.to_datetime(df['real_time'], format='%Y-%m-%d %H:%M:%S')
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df['date'] = df['date'].dt.date


# %%
# 日播放量,日用户量,日作者量,日作品量
예제 #2
0
event_type -行为类别
product_id -产品编号
category_id -产品的类别ID
category_code -产品的类别分类法(代码名称)
brand -品牌名称
price -产品价格
user_id -用户ID
'''

# %%
# 1.读取文件,查看基本信息
file_path = r'C:\Users\bolat\Desktop\file\DataAnalysis\archive.zip'

df = u.unpack_file_to_df(file_path)
df = df['kz']
u.show_info(df)
print(df.shape)
u.show_na(df)
u.show_duplicated(df)
print(df.describe())

# %%
# 修正各字段
# 1.删除重复记录
df.drop_duplicates(inplace=True, ignore_index=True)
# %%
# 2.修改event_time字段为日期属性,并添加月字段
df['event_time'] = pd.to_datetime(df['event_time'])
df['month'] = df['event_time'].dt.month

# %%
예제 #3
0
import seaborn as sns
from matplotlib import pyplot as plt
from pyecharts.charts import *
from pyecharts.faker import Faker

from common import utils

# %%
# 导入数据
file_path = r'数据分析项目/database/bicycle_sharing.csv'
df = pd.read_csv(file_path)
df.head()

# 数据清洗,异常值处理
print(utils.show_na(df))  # 各字段不存在NA值
print(utils.show_info(df))  # 不存在异常值,但需要修改datetime字段数据类型
print(utils.show_duplicated(df))  # 不存在重复记录
"""源数据经查不需要进行清洗"""

# 提取数据特征
df['datetime'] = pd.to_datetime(df['datetime'])
df['year'] = df['datetime'].dt.year
df['month'] = df['datetime'].dt.month
df['day'] = df['datetime'].dt.day
df['hour'] = df['datetime'].dt.hour
df['minute'] = df['datetime'].dt.minute

sns.set_style('ticks')
plt.figure(figsize=(12, 6))
# 利用kdeplot查看数据的分布特征
sns.kdeplot(df['count'])
예제 #4
0
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# %%
# 读取数据
file_path = r'C:\Users\bolat\Desktop\file\DataAnalysis\2019B1631.zip'
# %%
df_dict = u.unpack_file_to_df(file_path)
data1 = df_dict['data1']
data2 = df_dict['data2']
data3 = df_dict['data3']

# %%
# 数据基本检查
print(u.show_info(data1))
print(u.show_info(data2))
print(u.show_info(data3))

# %%
# 检查重复值,NA值
print(u.show_na(data1))
print(u.show_duplicated(data1))
print(u.show_na(data2))
print(u.show_duplicated(data2))
print(u.show_na(data3))
print(u.show_duplicated(data3))

# %%
# 列重命名
data1.columns = ['序号', '校园卡号', '性别', '专业名称', '门禁卡号']
예제 #5
0
import pandas as pd
import common.utils as utils

# %%

file_path = r'数据分析项目/date_file/ab_data.csv'

df = pd.read_csv(file_path)
# print(df.head())
print(utils.show_na(df))  # 检查NA值
print(utils.show_info(df))  # 检查数据极值
print(utils.show_duplicated(df))  # 检查重复值情况

# %%
# 新旧页面转化率
control_isconverted_num = df[(df['landing_page'] == 'old_page')
                             & (df['converted'] == 1) &
                             (df['group'] == 'control')]['user_id'].nunique()
control_view_num = df[(df['landing_page'] == 'old_page')
                      & (df['group'] == 'control')]['user_id'].count()
control_tr = round((control_isconverted_num * 100 / control_view_num), 4)

control = {
    '转换数': control_isconverted_num,
    '浏览数': control_view_num,
    '转化率': str(control_tr) + '%'
}

treatment_isconverted_num = df[(df['landing_page'] == 'new_page')
                               & (df['converted'] == 1) &
                               (df['group']
예제 #6
0
from pyecharts.charts import *
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score  # 导入轮廓系数指标
from sklearn.preprocessing import MinMaxScaler, OneHotEncoder

import common.utils as utils

file_path = r'数据分析项目/database/ad_performance.csv'
pd.set_option('display.max_columns', None)  # 设置显示所有字段
df = pd.read_csv(file_path)
df.drop(columns=['Unnamed: 0'], inplace=True)
utils.fix_matplotlib_error()  # 解决matplotlib中的中文乱码问题

# 检查数据的NA值,描述性统计,重复值情况
print(utils.show_na(df))
print(utils.show_info(df))  # 平均停留时间字段存在2个缺失值
print(utils.show_duplicated(df))

# %%
# 缺失值数据查看
df[df['平均停留时间'].isna()]

# 删除包含缺失值的记录
df = df[~df['平均停留时间'].isna()]
df.reset_index(inplace=True, drop=True)

# 各字段相关性展示
corr = df.corr().round(2)
sns.heatmap(corr, cmap='Blues', annot=True)
plt.show()
예제 #7
0
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import *
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from sklearn.preprocessing import MinMaxScaler

from common import utils

# %%
file_path = r'数据分析项目/database/bilibili2019-1_2020-3.csv'
df = pd.read_csv(file_path)

# %%
print(utils.show_na(df))
print(utils.show_info(df))
print(utils.show_duplicated(df))

# %%
"""
IFL模型
I(Interaction_rate):
I值反映的是平均每个视频的互动率,互动率越高,表明其视频更能产生用户的共鸣,使其有话题感。
**I=(总弹幕数+总评论数)/总播放量/统计范围内视频数量
F(Frequence):
F值表示的是每个视频的平均发布周期,每个视频之间的发布周期越短,说明内容生产者创作视频的时间也就越短,创作时间太长,
不是忠实粉丝的用户可能将其遗忘。
**F=(统计范围内最晚发布视频时间-最早发布视频时间)/发布视频的数量
L(Like_rate):
L值表示的是统计时间内发布视频的平均点赞率,越大表示视频质量越稳定,用户对up主的认可度也就越高。
**L=(点赞数X1+投币数X2+收藏数X3+分享数X4)/播放量X发布视频数