怎么用python初步探索数据

所有分析和建模工作开始前,需要先对数据做初步的了解,包括基本的分布情况和可视化,下面给出几个万金油代码,我日常经常使用,强烈推荐给大家

看下所有数值型数据的数值情况,

画多个指标的箱线图

import pandas as pd
import matplotlib.pyplot as plt
print(df.describe())
counts = df.apply(pd.Series.value_counts)
counts.boxplot()
plt.show()

第二步,

所有的列的取值计数情况

#查看所有的列的取值计数情况
#(如果取值唯一,则不显示取值个数,如果不唯一,查看排名取值数排名前5的情况)
def describe_all(df):
    fenge="-"*100
    for i in df.columns:
        print(fenge)#分隔符
        print("列名称为"+str(i))
    
        # 检查每列的取值是否唯一,duplicated():如果某个值是重复值,则对应的布尔值为True,否则为False
        is_unique = ~df[i].duplicated()

        if is_unique.all():
            print("*取值具有唯一性")
        else:
            print('取值不唯一')
            # 存在重复项的时候,列对应的出计数(前5个)
            print(df[i].value_counts().head(5))
        print(fenge)#分隔符

单个列的查看(判断是否唯一,只看前5个)

def unique_and_count(df,col,num):
    fenge = "-"*100
    print(fenge)#分隔符
    print(col)
    # 检查每列的取值是否唯一,duplicated():如果某个值是重复值,则对应的布尔值为True,否则为False
    is_unique = ~df[col].duplicated()
    if is_unique.all():
        print("取值具有唯一性")
    else:
        print('取值不唯一')
    # 打印(前num个)
        print(df[col].value_counts().head(num))
    print(fenge)#分隔符
unique_and_count(df,'addToCart',5)
print("对提取出的列,计数统计,非空值总数统计:")
print(df['asin'].value_counts())

绘制单个列的取值条形图

import pandas as pd
import matplotlib.pyplot as plt

print(df['quantity'].value_counts())
counts = df['quantity'].value_counts()
counts.plot(kind='bar')
plt.show()

下面是类比excel的数据透视功能

#汇总
dd = df.groupby('brand').agg(
    
    item_number_count=('item_number', 'size'),
    price_avg=('price_avg', 'mean'),
    price_max=('price_avg', 'max'),
    price_min=('price_avg', 'min'),
    
    price_mid=('price_avg', 'median'),
    revenue_avg=('revenue', 'mean'),
    revenue_min=('revenue', 'min'),
    revenue_max=('revenue', 'max'),
    
    revenue_var=('revenue', 'var')
).reset_index()
#排序
dd.sort_values(
by='small_rank', 
axis=0, 
ascending=True, 
inplace=False,
kind='quicksort', 
na_position='last') #按照日期排序,便于确定取数是否正确

 绘图的时候,一定要改成中文显示,不然老是乱码

import matplotlib.pyplot as plt
import seaborn as sns

# 设置字体为 Microsoft YaHei
plt.rcParams['font.family'] = 'Microsoft YaHei'

# 设置调色板
sns.set_palette("colorblind")

绘制频率分布图

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# 设置字体为 Microsoft YaHei
plt.rcParams['font.family'] = 'Microsoft YaHei'
# 对断货天数和平均日销进行分箱
df = df[df['业务分类'].isin(['A产品','B产品'])]
bins = np.arange(0, 200, 40)
df['stockout_days_bins'] = pd.cut(df['断货天数'], bins=bins)
bins = np.arange(0, 1, 0.1)
df['avg_daily_sales_bins'] = pd.cut(df['asin日均销量(2023H2)'], bins=bins)


# 将数据转换为矩阵形式
pivot_table = pd.pivot_table(df, values='asin', index='avg_daily_sales_bins', columns='stockout_days_bins', aggfunc='count')

# 绘制热力图
sns.heatmap(pivot_table, cmap='YlGnBu')
plt.title('asins 数量分布')
plt.xlabel("断货天数")
plt.ylabel("asin日均销量")
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐木叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值