日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python數(shù)據(jù)導(dǎo)入

系統(tǒng) 1694 0

一:從各種不同的格式文件中導(dǎo)入數(shù)據(jù),總結(jié)目前最常用的文件格式導(dǎo)入數(shù)據(jù)的一些方法:

            
              # -*- coding:utf-8 -*-
from numpy import *

def loadDataSet(fileName):
    '''導(dǎo)入數(shù)據(jù)'''
    numFeat = len(open(fileName).readline().split('\t')) - 1
    dataMat = []
    labelMat = []
    fr = open(fileName)
    for line in fr.readlines():
        lineArr = []
        curLine = line.strip().split('\t')
        for i in range(numFeat):
            lineArr.append(float(curLine[i]))
        dataMat.append(lineArr)
        labelMat.append(float(curLine[-1]))
    return dataMat, labelMat

# def loadDataSet(fileName):
#     numFeat = len(open(fileName).readline().split('\t'))    # 計(jì)算有多少列
#     dataMat = []
#     labelMat = []
#     fr = open(fileName)
#     for line in fr.readlines():        #  遍歷原始數(shù)據(jù)集每一行
#         lineArr =[]
#         curLine = line.strip().split('\t')      # 是一列表類(lèi)型
#         for i in range(numFeat-1):     # numFeat - 1的原因:因?yàn)樵紨?shù)據(jù)的最后一列是類(lèi)別,不是屬性數(shù)據(jù)
#             lineArr.append(float(curLine[i]))  # 一個(gè)一個(gè)傳進(jìn)lineArr列表向量
#         dataMat.append(lineArr)     # 再傳進(jìn)dataMat列表向量
#         labelMat.append(float(curLine[-1]))  # 寫(xiě)進(jìn)標(biāo)簽列表
#     return dataMat, labelMat

if __name__ == "__main__":
    '''線性回歸'''
    datafile = u'E:\\learningnotes\\programing\\big data\\MLaction_master\\Ch08_LinearRegression\\ex0.txt'
    #datafile = 'ex0.txt'
    xArr, yArr = loadDataSet(datafile)
    #xArr, yArr = loadDataSet('ex0.txt')
    print('xArr= \n', yArr)
    print('yArr= \n',  yArr)
            
          

注意事項(xiàng):
(1)該函數(shù)塊主要用于從原始數(shù)據(jù)文件(.txt,.data等)讀取數(shù)據(jù),用于機(jī)器學(xué)習(xí)算法的訓(xùn)練和測(cè)試應(yīng)用
(2)labelMat是一列表,表示標(biāo)簽/類(lèi)別
(3)dataMat也是列表類(lèi)型
(4)當(dāng)原始數(shù)據(jù)文件間的數(shù)據(jù)是空格隔開(kāi),則使用.split('\t')
?????????????????????? 若是逗號(hào)隔開(kāi),則使用.split(',')

二:其他總結(jié)

            
              # 從CSV文件導(dǎo)入數(shù)據(jù)
'''
步驟:
1. 打開(kāi)文件
2.讀取文件頭
3.讀取剩余行
4當(dāng)發(fā)生錯(cuò)誤時(shí)拋出異常
'''

import csv
import sys
filename = 'ex5.csv'
data = []
try:
    with open(filename) as f:
        reader = csv.reader(f)
        header = reader.next()
        data = [row for row in reader]
except csv.Error as e:
    print "Error reading CSV file at line %s : %s" % (reader.line_num, e)
    sys.exit(-1)
if header:
    print header
    print "=========="
for datarow in data:
    print datarow


# 從Excel文件中導(dǎo)入數(shù)據(jù)
'''
步驟:
1. 打開(kāi)文件的工作簿。
2. 根據(jù)名稱(chēng)找到工作表。根據(jù)行數(shù)(nrows)和列數(shù)(ncols)讀取單元格的內(nèi)容。
3. 打印出數(shù)據(jù)集合。
'''
import xlrd
file = 'output.xls'
wb = xlrd.open_workbook(file)
ws = wb.sheet_by_name("sheet1")
dataset = []
for r in xrange(ws.nrows):
    col = []
    for c in range(ws.ncols):
        col.append(ws.cell(r, c).value)
    dataset.append(col)
# 美化打印
from pprint import pprint
pprint(dataset)

# 從定寬數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)
'''
步驟:
1.指定要讀取的數(shù)據(jù)文件。
2.定義數(shù)據(jù)讀取的方式。
3.逐行讀取文件并根據(jù)格式把每一行解析成單獨(dú)的數(shù)據(jù)字段。
4.按單獨(dú)數(shù)據(jù)字段的形式打印每一行。
'''
import struct
datafile = 'fix-width.data'
# 掩碼定義為5s10s5s,表示為9個(gè)字符的字符串,跟一個(gè)10個(gè)字符的字符串,再跟一個(gè)5個(gè)字符的字符串(包括空格)。
mask = '5s10s5s'
results = []
with open(datafile, 'r') as f:
    for line in f:
        # 用格式解析的unpack_from方法。
        fields = struct.Struct(mask).unpack_from(line)
        results.append([field.strip() for field in fields])
from pprint import pprint
pprint(results)


# 從制表符分隔的文件中讀取數(shù)據(jù)
'''
制表符分隔的文件大部分是可以用CSV文件導(dǎo)入的方法,除了一些不正常的文件。這時(shí)就需要在切分前對(duì)特殊行的數(shù)據(jù)進(jìn)行單獨(dú)清理。
'''

from pandas import DataFrame
lines = []
datafile = 'data_dirty.tab'
with open(datafile, "r") as f:
    for line in f:
        line = line.strip().split("\t")
        lines.append(line)
        results = DataFrame(lines[1:], columns=[lines[0]])
print results


# 從JSON數(shù)據(jù)源導(dǎo)入數(shù)據(jù)
'''
步驟:
1.指定URL讀取JSON格式數(shù)據(jù)
2.使用requests模塊訪問(wèn)指定的URL,并獲取內(nèi)容
3.讀取內(nèi)容并將轉(zhuǎn)化為JSON格式的對(duì)象
4.迭代訪問(wèn)JSON對(duì)象,讀取每一個(gè)代碼庫(kù)的URL值
'''
import requests
url = 'https://github.com/timeline.json'
r = requests.get(url)
json_obj = r.json()
repos = set()
for entry in json_obj:
    print entry

    try:
        repos.add(entry['repository']['url'])
    except KeyError as e:
        print "No key %s Skipping..." % (e)
from pprint import pprint
pprint(repos)

# 從HTML中導(dǎo)入數(shù)據(jù)
from lxml.html import parse
from urllib2 import urlopen
parsed = parse(urlopen("https://finance.yahoo.com/q/op?s=AAPL+Options"))
# 找到文檔中的表格,并將其導(dǎo)入。
doc = parsed.getroot()
table = doc.findall(".//table")
# 然后選擇一個(gè)表格做測(cè)試。
put = table[1]
# 對(duì)于一個(gè)表格來(lái)說(shuō),有一個(gè)標(biāo)題和數(shù)據(jù)。在HTML中th單元格就表示標(biāo)題行,td則表示數(shù)據(jù)行。
def _unpack(row, kind="td"):
    elts = row.findall(".//%s" % kind)
    return [val.text_content() for val in elts]
# 同時(shí),在導(dǎo)入數(shù)據(jù)表格時(shí),應(yīng)該考慮到文本類(lèi)型。我們使用pandas中的TextParser類(lèi)自動(dòng)類(lèi)型轉(zhuǎn)換。
from pandas.io.parsers import TextParser
def parse_options_data(table):
    rows = table.findall(".//tr")
    header = _unpack(rows[0], kind="th")
    data = [_unpack(r) for r in rows[1:]]
    return TextParser(data, names=header).get_chunk()
# 最后對(duì)這個(gè)表格調(diào)用該解析函數(shù)
put_data = parse_options_data(put)
print put_data[:10]
# 同時(shí),我們也可以獲取文檔的全部URL
# 鏈接的標(biāo)簽是a。
links = doc.findall(".//a")
# print links[15:20]
# 得到一個(gè)鏈接的URL和文本內(nèi)容分別使用,get()和text_content()方法
urls = [lnk.get("href") for lnk in links]
text = [lnk.text_content() for lnk in links]
from pprint import pprint
pprint(urls[:10])
print “============”
            
          
            
              pprint(text[:10])
            
          

三:實(shí)際案例導(dǎo)入代碼

            
              # -*- coding:utf-8 -*-
sklearn.model_selection import train_test_split

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas import DataFrame,Series
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

#讀取文件
datafile = u'E:\\learningnotes\\PycharmProjects\\untitled\\data_mining\\input\\datadata.xls'#文件所在位置,u為防止路徑中有中文名稱(chēng),此處沒(méi)有,可以省略
data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件則用read_csv
examDf = DataFrame(data)
print('examDf=\n',examDf.head())
print('data=\n',data)
            
          

四:實(shí)際案例代碼

            
              # -*- coding:utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

#1獲取數(shù)據(jù)
#1.1 數(shù)據(jù)來(lái)源二:導(dǎo)入文件數(shù)據(jù)
path = "../input/"
train = pd.read_csv(path+"train.csv")
train.columns=['q','w','e','r','label']
test = pd.read_csv(path+"data_iris_test.csv", header=-1) #header=-1為增加列名序號(hào)
test.columns=['q','w','e','r'] #列名修改
print("數(shù)據(jù)來(lái)源二:train集顯示前十個(gè)--->\n",train.head(10))#顯示前十個(gè)
print("test集顯示前十個(gè)--->\n",test.head(10))
print("train集常用計(jì)算值描述--->\n",train.describe()) #描述

#1.2 數(shù)據(jù)來(lái)源一:導(dǎo)入sklearn里面的例子數(shù)據(jù)集
def load_data_iris():
    from sklearn import datasets
    iris=datasets.load_iris()#導(dǎo)入分類(lèi)算法花數(shù)據(jù)集(load_boston()波士頓房?jī)r(jià)回歸集;load_digits()手寫(xiě)數(shù)字分類(lèi)集)
    x=iris.data #獲取特征向量
    y=iris.target #獲取樣本label
    '''
    #查看數(shù)據(jù)集長(zhǎng)什么樣:
    print("數(shù)據(jù)來(lái)源一:iris--->\n",iris)
    print("x--->\n",x)
    print("y--->\n",y)
    print("iris.target_names--->\n",iris.target_names)
    print("DESCR--->\n",iris.DESCR)
    input()
    '''
#1.3 數(shù)據(jù)來(lái)源三:sklearn.datasets創(chuàng)建數(shù)據(jù)
def load_data_datasets():
    from sklearn.datasets.samples_generator import make_classification
    X,Y=make_classification(n_samples=6,n_features=5,n_informative=2,n_redundant=2,n_classes=2,n_clusters_per_class=2,scale=1.0,random_state=20)
    '''
    #n_samples:制定樣本數(shù)
    #n_features:指定特征數(shù)
    #n_classes:指定幾分類(lèi)
    #random_state:隨機(jī)種子,使得隨機(jī)狀可重
    for x_,y_ in zip(X,Y):
        print("數(shù)據(jù)來(lái)源三:y_:\n",y_)
        print("數(shù)據(jù)來(lái)源三:x_:\n",x_)
    input()
    '''

            
          

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 贺兰县| 阿勒泰市| 通山县| 光泽县| 鞍山市| 古蔺县| 噶尔县| 清涧县| 东源县| 日照市| 饶阳县| 小金县| 吉林省| 长武县| 金华市| 岳普湖县| 红河县| 民权县| 塔城市| 增城市| 晋州市| 兰西县| 德阳市| 福泉市| 长子县| 武宁县| 建水县| 开阳县| 娱乐| 万荣县| 徐水县| 本溪市| 手游| 四子王旗| 尚志市| 广西| 乳源| 荆州市| 土默特左旗| 江永县| 西充县|