今日课程内容
- 内容回顾
- 作业讲解
- Tableua的计算
- Tableua的参数
- 电商案例讲解
今日内容详细
内容回顾
1.构建图形
盒须图
树状图
气泡图
文字云
...
2.Tableua的计算
聚合函数
sum、avg、max、min、count、countd、zn、abs
if...else
四象限颜色设置的图形
作业讲解
1.使用Tableua,绘制上海空心饼图
step1:上海的销售额占比
step2:总比例(100%)
step3:将上海、总比作为颜色及弧度来使用
2.算法题:给定10个数据,后一个数据是前一个数据的描述(10)
有一个列表a,保存10个数据,第一个数据默认为1,后面的数据依次是全面数据的描述
a[0] = 1
a[1] = 11
a[2] = 21
a[3] = 1211
a[4] = 111221
[1,1,1] [2,2] [1]
len
3 1
2 2
1 1
a[5] = 312211
...
对数据进行分割,不同的放置到不同的列表里面
[3] [1] [2, 2] [1,1]
len() + 3
数量 数据
1 3
1 1
2 2
2 1
[
[3],
[1],
[2,2],
[1,1]
]
import time
start = time.time()
a = ['1']
def func(num):
nums_info = [[num[0]],]
index = 0
for x in range(0,len(num)-1):
if num[x] != num[x+1]:
info = []
info.append(num[x+1])
nums_info.append(info)
index += 1
else:
nums_info[index].append(num[x+1])
next_num = ""
for nums in nums_info:
next_num += str(len(nums)) + nums[0]
return next_num
for x in range(50):
a.append(func(a[x]))
print(a)
end = time.time()
print('程序消耗时长:',(end-start))
Tableua计算-CASE
CASE...WHEN
CASE 选项
WHEN 选项1 THEN XXX
WHEN 选项2 THEN XXX
...
END
东北-》地区1
华北-》地区2
...
if 地区==‘华北’ then 地区1
...
Tableua计算-IFNULL
数据处理的时候:缺失值处理
1、zn() 填充为0
2、ifnull(num) 填充为任意数据
等同于python的fillna()
Tableua计算-字符串
北京日花费3000元
excel:3000元 right
北京 left
日花费 mid
python 切片
tableua 同excel一样
通过字符串显示数据:xxxx年xx月xx日
df[[产品名称].str.contains('实惠')]
Tableua计算-日期
DATEADD +
DATEIFF -
知道返回的日期
2021-6-4
2021-5-1
DATEIFF('MONTH') 1
DATEIFF('DAY') 34
案例:
1、收货日期为发货日期的3天后
2、计算提交订单到收货一共多少天
获取日期数据
DATETRUNC
日期划分:季度划分
month()
DATEPART
日期划分:季度划分
电商案例讲解
'''
数据的来源:
某英国的kaggle电商公司的数据,主要产品是零售批发
数据的字段
InvoiceNo: 订单号
StockCode: 商品编号
Description: 商品描述
Quantity: 数量
InvoiceDate 日期
UnitPrice 单价
CustomerID 客户id
Country 国家
分析的需求?
1.购买商品数前十的国家是?
2.交易额前十的国家是?
3.哪些月份销量较佳?
4.客单价多少?
5.用户消费行为分析
'''
'''
数据分析的基本步骤
1、加载数据
2、观察数据
3、数据处理:数据清洗
4、建模(完成KPI)
5、可视化
6、总结报告
'''
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['FangSong']
print('----------------step1:加载数据----------------')
df = pd.read_csv('data.csv', dtype=object)
print('----------------step2:观察数据----------------')
print('列名:\n', df.columns)
print()
print('数据类型:\n',df.dtypes)
print()
print('形状:\n',df.shape)
print()
print('索引:\n', df.index)
print()
print('非空统计-计数:\n', df.count())
print()
print('前5条数据:\n', df.head())
print()
print('数据的基本信息:\n',df.info())
'''
通过数据观察,初步了解以下问题
问题:
1、数据类型有问题
2、数据存在缺失值
3、数据有异常(有负数的数据,退货数据,不需要去分析)
4、缺少金额一列
'''
print('----------------step3:数据处理-数据清洗----------------')
'''
一般在做数据分析前,需要对数据进行处理操作,保证数据的准确性
数据清洗主要包括:
1、缺失值处理
2、异常值处理
3、重复值处理
4、子集的选择
5、类型的转换
6、重命名
7、数据排序
8、字段统一化
'''
'''
1、缺失值处理
'''
df.dropna(inplace=True)
'''
2、类型转换
'''
df['Quantity'] = df['Quantity'].astype(float)
df['UnitPrice'] = df['UnitPrice'].astype(float)
df['InvoiceDate'] = pd.to_datetime(df['InvoiceDate'])
'''
3、异常值处理:去除负数的数据
'''
df = df[ df['Quantity']>=0 ]
print(df.describe())
'''
4、重命名:不需要
df.rename(columns={旧名:新名...})
'''
'''
5、排序
'''
df.sort_values(by='InvoiceDate', inplace=True, ignore_index=True)
'''
6、子集的选择
'''
df['money'] = df['Quantity']*df['UnitPrice']
print(df.head())
'''
7、字段统一化
usa USA 是同一个国家,但是不进行同一化处理,会影响结果
USA
USA
apply(处理函数)
处理函数:去除前后空格,全部转换成大写
'''
df['Country'] = df['Country'].str.upper()
df['Country'] = df['Country'].str.strip()
print(df['Country'])
kpi_df = df.copy()
print('----------------step4:建模,完成KPI----------------')
plt.figure('kaggle电商数据分析', figsize=(6.4*1.5,4.8*1.5))
def kpi(column, i, kpi_title):
kpi1_data = kpi_df.groupby(by='Country')[[column]].sum()
kpi1_data.sort_values(by=column, ascending=False,inplace=True)
top_ten_quantity = kpi1_data[:10]
print(top_ten_quantity)
plt.subplot(2,2,i)
plt.title(kpi_title)
if i in [1,3]:
plt.xlabel('国家', fontsize=10)
plt.ylabel('数量', fontsize=10)
plt.xticks(rotation=90)
plt.bar(top_ten_quantity.index, top_ten_quantity[column])
else:
plt.xlabel('数量', fontsize=10)
plt.ylabel('国家', fontsize=10)
plt.barh(top_ten_quantity.index, top_ten_quantity[column])
kpi('Quantity',1,'购买商品数前十的国家是?')
kpi('Quantity',2,'购买商品数前十的国家是?')
kpi('money', 3, '交易额前十的国家是?')
kpi('money', 4, '交易额前十的国家是?')
plt.show()
作业
Tableua:
1、筛选白先生/白女士的订单
2、计算出生的天数
3、计算各城市的发货天数
4、给定日期,计算该日期所在的季度天数
python:
完成RFM模型