1. 程式人生 > >Python數據分析實例操作

Python數據分析實例操作

sum() Y軸 def pandas 顏色 isn csv list 返回

import pandas as pd  #導入pandas
import matplotlib.pyplot as plt #導入matplotlib
from pylab import *
mpl.rcParams[‘font.sans-serif‘] = [‘SimHei‘]
mpl.rcParams[‘axes.unicode_minus‘] = False
%matplotlib inline

數據讀取與索引

bra = pd.read_csv(‘data/bra.csv‘)
bra.head()

技術分享圖片

選取列

bra.content

技術分享圖片

bra[[‘creationTime‘,‘productColor‘]].head()

技術分享圖片

選擇行

bra[1:6]

技術分享圖片

選擇行和列

bra.ix[[2,3],[1,3]]  #使用ix

技術分享圖片

bra.ix[1:5,[‘productColor‘]]  

技術分享圖片

bra.iloc[[2,3],[1,3]] #使用iloc

技術分享圖片

bra.loc[1:5,[‘content‘,‘creationTime‘,‘productSize‘]] #使用loc

技術分享圖片

bra.loc[1:5,‘content‘:‘userClientShow‘]

技術分享圖片

數據預處理

缺失值

bra.describe() #查看數據的分布情況,可返回變量和觀測的數量、缺失值和唯一值的數目、平均值、分位數等相關信息

技術分享圖片

bra[‘userClientShow‘].unique()  #userClientShow列有幾種選項

技術分享圖片

bra[‘userClientShow‘].isnull().sum() #初始缺失值數量

技術分享圖片

bra[‘userClientShow‘].fillna(‘不詳‘,inplace=True) #缺失值替換為“不詳”

bra[‘userClientShow‘].isnull().sum() #賦值後的缺失值數量

技術分享圖片

新增列

bra.dtypes #查看屬性

技術分享圖片

bra[‘creationTime‘] = pd.to_datetime(bra[‘creationTime‘]) #更新類型
bra.dtypes

技術分享圖片

bra[‘hour‘] = [i.hour for i in bra[‘creationTime‘]] #新建hour列
bra

技術分享圖片

字符串操作

bra.productSize.unique() #查看productSize的唯一值

技術分享圖片

cup = bra.productSize.str.findall(‘[a-zA-Z]+‘).str[0] #新增列cup
cup2 = cup.str.replace(‘M‘,‘B‘)
cup3 = cup2.str.replace(‘L‘,‘C‘)
cup4 = cup3.str.replace(‘XC‘,‘D‘)
bra[‘cup‘] = cup4  
bra.head()

技術分享圖片

bra[‘cup‘].unique() #查看cup唯一值

技術分享圖片

數據轉換

bra.productColor.unique() #查看productColor唯一值

技術分享圖片

def getColor(s):
    if ‘黑‘ in s:
        return ‘黑色‘
    elif ‘膚‘ in s:
        return ‘膚色‘
    elif ‘藍‘ in s:
        return ‘藍色‘
    elif ‘紅‘ in s:
        return ‘紅色‘
    elif ‘紫‘ in s:
        return ‘紫色‘
    elif ‘白‘ in s:
        return ‘白色‘
    elif ‘粉‘ in s:
        return ‘粉色‘
    elif ‘灰‘ in s:
        return ‘灰色‘
    elif ‘綠‘ in s:
        return ‘綠色‘
    elif ‘青‘ in s:
        return ‘青色‘
    else:
        return s
bra[‘color‘] = bra[‘productColor‘].map(getColor) #從productColor列查詢,賦值到定義的函數getColor,最終新增列color
bra

技術分享圖片

bra.color.unique() #查詢color的唯一值

技術分享圖片

數據可視化

x = [1991,1992,1993,1994,1995,1996,1997]
y = [23,56,38,29,34,56,92]
plt.plot(x,y) #調用函數plot

技術分享圖片

plt.figure(figsize=(8,6),dpi=80) #調用函數firgure
plt.plot(x,y)

技術分享圖片

hour = bra.groupby(‘hour‘)[‘hour‘].count()  #hour列排序
hour

技術分享圖片

plt.xlim(0,25) #橫軸0~25
plt.plot(hour,linestyle=‘solid‘,color=‘royalblue‘,marker=‘8‘) #顏色深藍

技術分享圖片

cup_style = bra.groupby(‘cup‘)[‘cup‘].count() #cup列唯一值得數量
cup_style

技術分享圖片

plt.figure(figsize=(8,6),dpi=80)
labels = list(cup_style.index)
plt.xlabel(‘cup‘) #x軸為cup
plt.ylabel(‘count‘) #y軸為count數量
plt.bar(range(len(labels)),cup_style,color=‘royalblue‘,alpha=0.7) #alpha為透明度
plt.xticks(range(len(labels)),labels,fontsize=12)
plt.grid(color=‘#95a5a6‘,linestyle=‘--‘,linewidth=1,axis=‘y‘,alpha=0.6)
plt.legend([‘user-count‘])
for x,y in zip(range(len(labels)),cup_style):
plt.text(x,y,y,ha=‘center‘,va=‘bottom‘)

技術分享圖片

color_style = bra.groupby(‘color‘)[‘color‘].count() #color列唯一值得數量
color_style

技術分享圖片

plt.figure(figsize=(8,6),dpi=80)
plt.subplot(facecolor=‘gainsboro‘,alpha=0.2)
colors = [‘brown‘,‘orange‘,‘gray‘,‘white‘,‘pink‘,‘purple‘,‘red‘,‘green‘,‘wheat‘,‘blue‘,‘gold‘,‘springgreen‘,‘black‘] #顏色種類
labels = list(color_style.index)
plt.xlabel(‘count‘) #x軸為count數量
plt.ylabel(‘color‘) #y軸為color
plt.title(‘Color Distribution‘) #定義標題
plt.barh(range(len(labels)),color_style,color=colors,alpha=1)
plt.yticks(range(len(labels)),labels,fontsize=12)
plt.grid(color=‘#95a5a6‘,linestyle=‘--‘,linewidth=1,axis=‘x‘,alpha=0.4)

技術分享圖片

bra.head(30)

技術分享圖片

Python數據分析實例操作