Python可視化入門

Python可視化入門

    一直在學習Python,但是不知道Python具體可以用來幹嗎,我只是用它來做機器學習,還沒有做一些其他的東西,今天突然看見一篇非常好的Python可視化教程,於是記錄下來,便於大家學習以及個人的鞏固加強。教程在 可視化教程

    既然我們要學習可視化教程,那就需要數據啊,數據在這 數據

    我們先看看數據是什麼樣的:

tu1.JPG

最上面的一行是標題,接下來就是對應標題的數據


  • 我們第一個任務就是將整個數據變成json格式的,也就是鍵值對的格式。

import csv  #導入csv包
MY_FILE = 'sample_sfpd_incident_all.csv'
def parse(raw_file,delimiter):
    opened_file = open(raw_file) #讀取文件
    csv_data = csv.reader(opened_file,delimiter=delimiter) #使用csv.reader讀取文件,並用符號分割
    parsed_data = []
    fields = csv_data.next() #讀取第一行數據,也就是標題
    for row in csv_data:
        parsed_data.append(dict(zip(fields,row)))  #將標題與下面的每個字段整合,然後變成字典類型添加到列表中去
    opened_file.close()  #關閉
    return parsed_data
new_data = parse(MY_FILE,',')

不要看看就好了,一定要動手去做。當結果出現是不是有成就感啊!


  • 我們第二個任務就是畫圖

我們先來看看我們的數據是怎麼樣的

{
'Category'   : 'ASSAULT',
'IncidntNum' : '030204181',
'DayOfWeek'  : 'Tuesday',
'Descript'   : 'BATTERY',
'PdDistrict' : 'CENTRAL',
'Y'          : '37.7981847618287',
'Location'   : '300 Block of COLUMBUS AV',
'Time'       : '18:15',
'Date'       : '02/18/2003',
'X'          : '-122.407069627873',
'Resolution' : 'ARREST, BOOKED'},

  這份數據是當地犯罪的記錄,包括犯罪類型,犯罪編號,犯罪事件,描述,等等。我們先來看看一個星期中哪天犯罪的次數最多:

def visualize_days():
    data_file = parse(MY_FILE,',')
    counter = Counter(item['DayOfWeek'] for item in data_file) #統計出現的次數
    data_list = [
                 counter["Monday"],
                 counter["Tuesday"],
                 counter["Wednesday"],
                 counter["Thursday"],
                 counter["Friday"],
                 counter["Saturday"],
                 counter["Sunday"]
                 ]
    day_tuple = tuple(["Mon", "Tues", "Wed", "Thurs", "Fri", "Sat", "Sun"])
    plt.plot(data_list) 
    plt.xticks(range(len(day_tuple)),day_tuple) #畫x軸
    plt.show()

我們看到了這樣的一張圖:

tu2.png

哎,星期二犯罪次數是最多的。。。


接下來我們做一下事件分析:

def visualize_type():
    import numpy as np
    data_file = parse(MY_FILE,',')
    
    counter = Counter(item['Category'] for item in data_file)
    labels = tuple(counter.keys())
    xlocations = np.arange(len(labels))+0.5
    width = 0.5
    plt.bar(xlocations,counter.values(),width=width)
    plt.xticks(xlocations+width/2,labels,rotation=90)
    plt.subplots_adjust(bottom=0.4)
    plt.rcParams['figure.figsize'] = 12,8
    plt.show()

tu3.png

可見,warrants是最多的。


接下來我們根據數據中的經緯度來畫地圖!

def create_map(data_file):
    geo_map = {"type": "FeatureCollection"}  #創建我們想要的地圖類型
    item_list = []
    for index,line in enumerate(data_file):
        if line['X'] == '0' or line['Y']=='0':
            continue
        data = {}
        data['type'] = 'Feature'
        data['id'] = index
        data['properties'] = {'title': line['Category'],
                              'description': line['Descript'],
                              'date': line['Date']}
        data['geometry'] = {'type': 'Point',
                            'coordinates': (line['X'], line['Y'])}
        item_list.append(data)
        for point in item_list:
            geo_map.setdefault('features', []).append(point)
        with open('file_sf.geojson', 'w') as f:
            f.write(geojson.dumps(geo_map))

接下來打開https://gist.github.com/ 將生成的文件的內容放到這裏面去。

點擊Create secret gist這個按鈕,就會生成這樣的樣式圖片:

tu4.JPG

到這裏我們先告一段落啦!希望大家看了有感覺,謝謝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章