基本信息
导入需要的库:csv文件
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline #将画图库内嵌到网页上,这样就可以显示图像 使用pd读取相关的文件,这里读取的是csv文件
sales = pd.read_csv(r'sales_data.csv',parse_dates=['Date']) 查看文件信息
sales.head()
sales.shape
#(113036, 18) 查看文件的相关信息,
sales.info() <class 'pandas.core.frame.DataFrame'>RangeIndex: 113036 entries, 0 to 113035Data columns (total 18 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Date 113036 non-null datetime64[ns] 1 Day 113036 non-null int64 2 Month 113036 non-null object 3 Year 113036 non-null int64 4 Customer_Age 113036 non-null int64 dtypes: datetime64[ns](1), int64(9), object(8)memory usage: 15.5+ MB
查看详细信息sales.describe()
均值方差等信息
查看某一列的详细信息(包括均值方差等信息):
sales['Unit_Cost'].describe()
单独求均值方差如下:sales['Unit_Cost'].mean() #均值
sales['Unit_Cost'].std() #方差
sales['Unit_Cost'].median() #中值
sales['Unit_Cost'].head() #前5行列表
##值分别为:
#267.296365759581
#549.8354831077943
#9.0 画图分析
横着的box图sales['Unit_Cost'].plot(kind = 'box',vert=False, figsize=(14,6))
画曲线图
sales['Unit_Cost'].plot(kind='density',figsize=(14,6))
画线
ax = sales['Unit_Cost'].plot(kind = 'density',figsize=(14,6))
ax.axvline(sales['Unit_Cost'].mean(),color='green')
ax.axvline(sales['Unit_Cost'].std(),color = 'red')
ax.axvline(sales['Unit_Cost'].median(),color = 'red')
画直方图
ax = sales['Unit_Cost'].plot(kind='hist',figsize=(14,6))
ax.set_ylabel('number of sales')
ax.set_xlabel('dollors')
分析Age_Group
sales.head()
sales['Age_Group'].value_counts()
通过原比例分析
sales['Age_Group'].value_counts().plot(kind='pie',figsize=(6,6))
通过圆柱bar进行分析
ax = sales['Age_Group'].value_counts().plot(kind = 'bar',figsize=(14,6))
ax.set_ylabel('number of sales')
从每一行之间查找相应的关系
相关性corr = sales.corr()
corr
画图展示
fig = plt.figure(figsize=(8,8))
plt.matshow(corr,cmap='RdBu',fignum= fig.number)
plt.xticks(range(len(corr.columns)),corr.columns,rotation='vertical');
plt.yticks(range(len(corr.columns)),corr.columns);
用点的方式:年龄与收入之间的关系
sales.plot(kind='scatter',x='Customer_Age',y = 'Revenue',figsize=(6,6))
收入和利润的关系
sales.plot(kind='scatter',x= 'Revenue',y='Profit',figsize=(6,6))
其他的相关性
boxplot_cols=['Year','Customer_Age','Order_Quantity','Unit_Cost','Unit_Price','Profit']
sales[boxplot_cols].plot(kind='box',subplots=True,layout=(2,3),figsize=(14,8))
添加新的信息
添加每个人的收益
sales['Revenue_per_Age']=sales['Revenue']/sales['Customer_Age']
sales['Revenue_per_Age'].head()
画曲线显示
sales['Revenue_per_Age'].plot(kind='density',figsize=(14,6))
画直方图分析
sales['Revenue_per_Age'].plot(kind= 'hist',figsize=(14,6))
添加数据 添加一行Calculated_Cost
使用的计算方式为:Calculated_Cost=Order_Quantity∗Unit_Cost
sales['Calculated_Cost']= sales['Order_Quantity']*sales['Unit_Cost']
sales['Calculated_Cost'].head()
画图分析
sales.plot(kind='scatter',x='Calculated_Cost',y='Profit',figsize=(6,6))
修改Unit_Price的值,对其添加3%的税
sales['Unit_Price'].head()
sales['Unit_Price']*=1.03
sales['Unit_Price'].head()
索引
选择所有在Kentucky州的交易
sales.loc[sales['State'] == 'Kentucky']
得到年龄在(35-64)之间的成年人的收入的均值
sales.loc[sales['Age_Group']=='Adults (35-64)','Revenue'].mean()
762.8287654055604
年龄在小于25和年龄在35-64之间的人有多少?
sales.loc[(sales['Age_Group']=='Youth (<25)') | (sales['Age_Group'] == 'Adults (35-64)')].shape[0] 73652
计算美国成年人(35-64岁)的平均收入
sales.loc[(sales['Age_Group'] == 'Adults (35-64)') & (sales['Country'] == 'United States'), 'Revenue'].mean() 726.7260473588342
给每个法国人增加10%的收入
#查看
sales.loc[sales['Country']=='France','Revenue']
#增加
sales.loc[sales['Country']=='France','Revenue']*=1.1
#查看
sales.loc[sales['Country']=='France','Revenue'].head()
|