数据分析-Tableua6.04

今日课程内容

  • 内容回顾
  • 作业讲解
  • Tableua的计算
    • case…when
    • 字符串
    • 日期
  • Tableua的参数
    • 动态参考线
    • 图表数据参数
    • 日期参数
    • 图表参数
  • 电商案例讲解
    • 数据加载
    • 数据观察
    • 数据处理

今日内容详细

内容回顾

1.构建图形
	盒须图
    树状图
    气泡图
    文字云
    ...
2.Tableua的计算
	聚合函数
    	sum、avg、maxmin、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))
# '12446722'
# [[1]]  index = 0
#
# []  -> [2]
# [[1],[2]]   index=1
#
# [] -> [4]
# [[1],[2],[4]]  index=2
#
# nums_info[2].append(4)  [4,4]
#
# [] - > [6]
# [[1],[2],[4,4],[6]]...

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('描述性统计:\n', df.describe())
# 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:购买商品数前十的国家是?
    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, '交易额前十的国家是?')
# kpi2:交易额前十的国家是?

plt.show()

作业

Tableua:
    1、筛选白先生/白女士的订单
    2、计算出生的天数
    3、计算各城市的发货天数
    4、给定日期,计算该日期所在的季度天数
python:
	完成RFM模型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值