python數(shù)據(jù)分析(八)

# -*- coding: utf-8 -*-

import numpy as np

import pandas as pd

import sys

from pandas import Series, DataFrame

###pandas

#Series

obj = Series([4, 7, -5, 3])

obj

obj.values

obj.index

obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])

obj2

obj2.index

obj2['a']

obj2['d'] = 6

obj2[['c', 'a', 'd']]

obj2[obj2 > 0]

obj2 * 2

np.exp(obj2)

'b' in obj2

'e' in obj2

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}

obj3 = Series(sdata)

obj3

states = ['California', 'Ohio', 'Oregon', 'Texas']

obj4 = Series(sdata, index=states)

obj4

pd.isnull(obj4)

pd.notnull(obj4)

obj4.isnull()

obj3

obj4

obj3 + obj4

obj4.name = 'population'

obj4.index.name = 'state'

obj4

obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']

obj

#dataframe

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],

'year': [2000, 2001, 2002, 2001, 2002],

'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}

frame = DataFrame(data)

frame

DataFrame(data, columns=['year', 'state', 'pop'])

frame2 = DataFrame(data, columns=['year', 'state', 'pop', 'debt'],

index=['one', 'two', 'three', 'four', 'five'])

frame2

frame2.columns

frame2['state']

frame2.year

frame2.ix['three']

frame2['debt'] = 16.5

frame2

frame2['debt'] = np.arange(5.)

frame2

val = Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])

frame2['debt'] = val

frame2

frame2['eastern'] = frame2.state == 'Ohio'

frame2

del frame2['eastern']

frame2.columns

pop = {'Nevada': {2001: 2.4, 2002: 2.9},

'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}

frame3 = DataFrame(pop)

frame3

frame3.T

DataFrame(pop, index=[2001, 2002, 2003])

pdata = {'Ohio': frame3['Ohio'][:-1],

'Nevada': frame3['Nevada'][:2]}

DataFrame(pdata)

frame3.index.name = 'year'; frame3.columns.name = 'state'

frame3

frame3.values

frame2.values

#索引對(duì)象

obj = Series(range(3), index=['a', 'b', 'c'])

index = obj.index

index

index[1:]

index[1] = 'd'

index = pd.Index(np.arange(3))

obj2 = Series([1.5, -2.5, 0], index=index)

obj2.index is index

frame3

'Ohio' in frame3.columns

2003 in frame3.index

###數(shù)據(jù)讀取

#讀取文本格式數(shù)據(jù)

df = pd.read_csv('d:data/ex1.csv')

df

pd.read_table('d:data/ex1.csv', sep=',')

pd.read_csv('d:data/ex2.csv', header=None)

pd.read_csv('d:data/ex2.csv', names=['a', 'b', 'c', 'd', 'message'])

names = ['a', 'b', 'c', 'd', 'message']

pd.read_csv('d:data/ex2.csv', names=names, index_col='message')

parsed = pd.read_csv('d:data/csv_mindex.csv', index_col=['key1', 'key2'])

parsed

list(open('d:data/ex3.txt'))

result = pd.read_table('d:data/ex3.txt', sep='\s+')

result

pd.read_csv('d:data/ex4.csv', skiprows=[0, 2, 3])

result = pd.read_csv('d:data/ex5.csv')

result

pd.isnull(result)

result = pd.read_csv('d:data/ex5.csv', na_values=['NULL'])

result

sentinels = {'message': ['foo', 'NA'], 'something': ['two']}

pd.read_csv('d:data/ex5.csv', na_values=sentinels)

#逐行讀取文本文件

result = pd.read_csv('d:data/ex6.csv')

result

pd.read_csv('d:data/ex6.csv', nrows=5)

chunker = pd.read_csv('d:data/ex6.csv', chunksize=1000)

chunker

chunker = pd.read_csv('d:data/ex6.csv', chunksize=1000)

tot = Series([])

for piece in chunker:

tot = tot.add(piece['key'].value_counts(), fill_value=0)

tot = tot.order(ascending=False)

tot[:10]

#文件寫出

data = pd.read_csv('d:data/ex5.csv')

data

data.to_csv('d:data/out.csv')

data.to_csv(sys.stdout, sep='|')

data.to_csv(sys.stdout, na_rep='NULL')

data.to_csv(sys.stdout, index=False, header=False)

data.to_csv(sys.stdout, index=False, columns=['a', 'b', 'c'])

dates = pd.date_range('1/1/2000', periods=7)

ts = Series(np.arange(7), index=dates)

ts.to_csv('tseries.csv')

Series.from_csv('tseries.csv', parse_dates=True)

#手工處理分隔符格式

import csv

f = open('d:data/ex7.csv')

reader = csv.reader(f)

for line in reader:

print(line)

lines = list(csv.reader(open('d:data/ex7.csv')))

header, values = lines[0], lines[1:]

data_dict = {h: v for h, v in zip(header, zip(*values))}

data_dict

class my_dialect(csv.Dialect):

lineterminator = '\n'

delimiter = ';'

quotechar = '"'

quoting = csv.QUOTE_MINIMAL

with open('mydata.csv', 'w') as f:

writer = csv.writer(f, dialect=my_dialect)

writer.writerow(('one', 'two', 'three'))

writer.writerow(('1', '2', '3'))

writer.writerow(('4', '5', '6'))

writer.writerow(('7', '8', '9'))

pd.read_table('mydata.csv', sep=';')

#Excel數(shù)據(jù)

#生成xls工作薄

import xlrd, xlwt

path = 'd:data/'

wb = xlwt.Workbook()

wb

wb.add_sheet('first_sheet', cell_overwrite_ok=True)

wb.get_active_sheet()

ws_1 = wb.get_sheet(0)

ws_1

ws_2 = wb.add_sheet('second_sheet')

data = np.arange(1, 65).reshape((8, 8))

data

ws_1.write(0, 0, 100)

for c in range(data.shape[0]):

for r in range(data.shape[1]):

ws_1.write(r, c, data[c, r])

ws_2.write(r, c, data[r, c])

wb.save(path + 'workbook.xls')

#生成xlsx工作薄

#從工作薄中讀取

book = xlrd.open_workbook(path + 'workbook.xls')

book

book.sheet_names()

sheet_1 = book.sheet_by_name('first_sheet')

sheet_2 = book.sheet_by_index(1)

sheet_1

sheet_2.name

sheet_1.ncols, sheet_1.nrows

cl = sheet_1.cell(0, 0)

cl.value

cl.ctype

sheet_2.row(3)

sheet_2.col(3)

sheet_1.col_values(3, start_rowx=3, end_rowx=7)

sheet_1.row_values(3, start_colx=3, end_colx=7)

for c in range(sheet_1.ncols):

for r in range(sheet_1.nrows):

print '%i' % sheet_1.cell(r, c).value,

print

#使用pandas讀取

xls_file=pd.ExcelFile(path + 'workbook.xls')

table=xls_file.parse('first_sheet')

#JSON數(shù)據(jù)

obj = """

{"name": "Wes",

"places_lived": ["United States", "Spain", "Germany"],

"pet": null,

"siblings": [{"name": "Scott", "age": 25, "pet": "Zuko"},

{"name": "Katie", "age": 33, "pet": "Cisco"}]

}

"""

import json

result = json.loads(obj)

result

asjson = json.dumps(result)

siblings = DataFrame(result['siblings'], columns=['name', 'age'])

siblings

#二進(jìn)制數(shù)據(jù)格式

#pickle

frame = pd.read_csv('d:data/ex1.csv')

frame

frame.to_pickle('d:data/frame_pickle')

pd.read_pickle('d:data/frame_pickle')

#HDF5格式

store = pd.HDFStore('mydata.h5')

store['obj1'] = frame

store['obj1_col'] = frame['a']

store

store['obj1']

store.close()

os.remove('mydata.h5')

#使用HTML和Web API

import requests

url = 'https://api.github.com/repos/pydata/pandas/milestones/28/labels'

resp = requests.get(url)

resp

data=json.loads(resp.text)

issue_labels = DataFrame(data)

issue_labels

#使用數(shù)據(jù)庫(kù)

import sqlite3

query = """

CREATE TABLE test

(a VARCHAR(20), b VARCHAR(20),

c REAL, ? ? ? ?d INTEGER

);"""

con = sqlite3.connect(':memory:')

con.execute(query)

con.commit()

data = [('Atlanta', 'Georgia', 1.25, 6),

('Tallahassee', 'Florida', 2.6, 3),

('Sacramento', 'California', 1.7, 5)]

stmt = "INSERT INTO test VALUES(?, ?, ?, ?)"

con.executemany(stmt, data)

con.commit()

cursor = con.execute('select * from test')

rows = cursor.fetchall()

rows

cursor.description

DataFrame(rows, columns=zip(*cursor.description)[0])

import pandas.io.sql as sql

sql.read_sql('select * from test', con)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,481評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,697評(píng)論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,182評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,406評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,933評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,772評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,973評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評(píng)論 1 285
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,644評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,953評(píng)論 2 373

推薦閱讀更多精彩內(nèi)容