In [1]:
import csv

print("tab delimited stock prices:")

def process(date, symbol, price):
    print(date, symbol, price)


with open('tab_delimited_stock_prices.txt', 'r', encoding='utf8',newline='') as f:
    reader = csv.reader(f, delimiter='\t')
    # reader = csv.reader(codecs.iterdecode(f, 'utf-8'), delimiter='\t')
    for row in reader:
        date = row[0]
        symbol = row[1]
        closing_price = float(row[2])
        process(date, symbol, closing_price)


tab delimited stock prices:
6/20/2014 AAPL 90.91
6/20/2014 MSFT 41.68
6/20/2014 FB 64.5
6/19/2014 AAPL 91.86
6/19/2014 MSFT 41.51
6/19/2014 FB 64.34

In [2]:
print("colon delimited stock prices:")

with open('colon_delimited_stock_prices.txt', 'r', encoding='utf8',newline='') as f:
    reader = csv.DictReader(f, delimiter=':')
    # reader = csv.DictReader(codecs.iterdecode(f, 'utf-8'), delimiter=':')
    for row in reader:
        date = row["date"]
        symbol = row["symbol"]
        closing_price = float(row["closing_price"])
        process(date, symbol, closing_price)


colon delimited stock prices:
6/20/2014 AAPL 90.91
6/20/2014 MSFT 41.68
6/20/2014 FB 64.5

In [3]:
print("writing out comma_delimited_stock_prices.txt")

today_prices = { 'AAPL' : 90.91, 'MSFT' : 41.68, 'FB' : 64.5 }

with open('comma_delimited_stock_prices.txt','w', encoding='utf8',newline='') as f:
    writer = csv.writer(f, delimiter=',')
    for stock, price in today_prices.items():
        writer.writerow([stock, price])


writing out comma_delimited_stock_prices.txt

In [9]:
from bs4 import BeautifulSoup
import requests
# 실행전 conda install bs4 requests

print("BeautifulSoup")
html = requests.get("http://www.example.com").text
soup = BeautifulSoup(html)
soup


BeautifulSoup
/usr/local/lib/python3.5/site-packages/bs4/__init__.py:181: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 184 of the file /usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Versions/3.5/lib/python3.5/runpy.py. To get rid of this warning, change code that looks like this:

 BeautifulSoup([your markup])

to this:

 BeautifulSoup([your markup], "lxml")

  markup_type=markup_type))
Out[9]:
<!DOCTYPE html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8"/>
<meta content="text/html; charset=utf-8" http-equiv="Content-type"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
        
    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 50px;
        background-color: #fff;
        border-radius: 1em;
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        body {
            background-color: #fff;
        }
        div {
            width: auto;
            margin: 0 auto;
            border-radius: 0;
            padding: 1em;
        }
    }
    </style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You may use this
    domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>

In [16]:
url = "http://shop.oreilly.com/category/browse-subjects/" + \
           "data.do?sortby=publicationDate&page=1"

#pip install html5lib
soup = BeautifulSoup(requests.get(url).text, 'html5lib')

soup


Out[16]:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
        

























  









<!--Janrain SSO JavaScripts -->


<!-- Script added to resolve JS error coming on IE-8 for Janrain login -->
<script>
	document.getElementsByClassName = 
	Element.prototype.getElementsByClassName = function(class_names) {
		// Turn input in a string, prefix space for later space-dot substitution
		class_names = (' ' + class_names)
			// Escape special characters
			.replace(/[~!@$%^&*()_+\-=,./';:"?><[\]{}|`#]/g, '\$&')
			// Normalize whitespace, right-trim
			.replace(/\s*(\s|$)/g, '$1')
			// Replace spaces with dots for querySelectorAll
			.replace(/\s/g, '.');
		return this.querySelectorAll(class_names);
	};
</script>



  
  
    
      
    
  


<meta content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" name="SKYPE_TOOLBAR"/>

<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>



  
  
     <meta content="summary" name="twitter:card"/>

  
    <meta content="Data - Books &amp; Videos - O'Reilly Media" name="twitter:title" property="og:title"/>
  
  



  <meta content="http://shop.oreilly.com/category/browse-subjects/data.do" name="twitter:url" property="og:url"/>


  
    <meta content="O'Reilly is a leader in books and videos for data." name="twitter:description" property="og:description"/>
  
  

     <meta content="@oreillymedia" name="twitter:site"/>
     <meta content="http://cdn.oreillystatic.com/oreilly/images/oreilly-social-icon-120.png" property="twitter:image"/> 
     <meta content="website" property="og:type"/>
     <meta content="http://cdn.oreillystatic.com/oreilly/images/oreilly-social-icon-200.png" property="og:image"/>
  


<title>Data - Books &amp; Videos - O'Reilly Media</title>


  
    <meta content="O'Reilly is a leader in books and videos for data." name="description"/>
  
  




  
    <meta content=" " name="keywords"/>
  
  






  <link href="http://shop.oreilly.com/category/browse-subjects/data.do" rel="canonical"/>

<script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
<script src="/includes/jquery/jquery-1.4.min.js" type="text/javascript"></script>
<script src="/includes/jquery/plugins/jquery.hoverIntent.minified.js" type="text/javascript"></script>
<script src="/includes/jquery/plugins/jquery.bgiframe.min.js" type="text/javascript"></script>
<script src="/includes/jquery/plugins/jquery.popDown.js" type="text/javascript"></script>
<script src="/includes/jquery/plugins/jquery.autocomplete.js" type="text/javascript"></script>




<link href="/mod/productquickview/includes/themes/default.css" rel="stylesheet" type="text/css"/>
<link href="/mod/productquickview/includes/themes/pqv.css" rel="stylesheet" type="text/css"/>

<!-- Start Visual Website Optimizer Asynchronous Code -->
<script type="text/javascript">
var _vwo_code=(function(){
var account_id=27087,
settings_tolerance=2000,
library_tolerance=1500,
use_existing_jquery=false,
// DO NOT EDIT BELOW THIS LINE
f=false,d=document;return{use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName('head')[0].appendChild(b);},init:function(){settings_timer=setTimeout('_vwo_code.finish()',settings_tolerance);this.load('//dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&r='+Math.random());var a=d.createElement('style'),b='body{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);return settings_timer;}};}());_vwo_settings_timer=_vwo_code.init();
</script>
<!-- End Visual Website Optimizer Asynchronous Code -->
        

























  











  
  

  
  
    <link href="/includes/stylesheet.css" rel="stylesheet" title="style" type="text/css"/>
  

  
  
  
  
  



        
<script type="text/javascript">window.NREUM||(NREUM={}),__nr_require=function(e,t,n){function r(n){if(!t[n]){var o=t[n]={exports:{}};e[n][0].call(o.exports,function(t){var o=e[n][1][t];return r(o||t)},o,o.exports)}return t[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(e,t,n){function r(){}function o(e,t,n){return function(){return i(e,[(new Date).getTime()].concat(u(arguments)),t?null:this,n),t?void 0:this}}var i=e("handle"),a=e(2),u=e(3),c=e("ee").get("tracer"),f=NREUM;"undefined"==typeof window.newrelic&&(newrelic=f);var s=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",p=l+"ixn-";a(s,function(e,t){f[t]=o(l+t,!0,"api")}),f.addPageAction=o(l+"addPageAction",!0),f.setCurrentRouteName=o(l+"routeName",!0),t.exports=newrelic,f.interaction=function(){return(new r).get()};var d=r.prototype={createTracer:function(e,t){var n={},r=this,o="function"==typeof t;return i(p+"tracer",[Date.now(),e,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[Date.now(),r,o],n),o)try{return t.apply(this,arguments)}finally{c.emit("fn-end",[Date.now()],n)}}}};a("setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(e,t){d[t]=o(p+t)}),newrelic.noticeError=function(e){"string"==typeof e&&(e=new Error(e)),i("err",[e,(new Date).getTime()])}},{}],2:[function(e,t,n){function r(e,t){var n=[],r="",i=0;for(r in e)o.call(e,r)&&(n[i]=t(r,e[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],3:[function(e,t,n){function r(e,t,n){t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);for(var r=-1,o=n-t||0,i=Array(o<0?0:o);++r<o;)i[r]=e[t+r];return i}t.exports=r},{}],ee:[function(e,t,n){function r(){}function o(e){function t(e){return e&&e instanceof r?e:e?c(e,u,i):i()}function n(n,r,o){if(!p.aborted){e&&e(n,r,o);for(var i=t(o),a=v(n),u=a.length,c=0;c<u;c++)a[c].apply(i,r);var f=s[w[n]];return f&&f.push([y,n,r,i]),i}}function d(e,t){b[e]=v(e).concat(t)}function v(e){return b[e]||[]}function g(e){return l[e]=l[e]||o(n)}function m(e,t){f(e,function(e,n){t=t||"feature",w[n]=t,t in s||(s[t]=[])})}var b={},w={},y={on:d,emit:n,get:g,listeners:v,context:t,buffer:m,abort:a,aborted:!1};return y}function i(){return new r}function a(){(s.api||s.feature)&&(p.aborted=!0,s=p.backlog={})}var u="nr@context",c=e("gos"),f=e(2),s={},l={},p=t.exports=o();p.backlog=s},{}],gos:[function(e,t,n){function r(e,t,n){if(o.call(e,t))return e[t];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return e[t]=r,r}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],handle:[function(e,t,n){function r(e,t,n,r){o.buffer([e],r),o.emit(e,t,n)}var o=e("ee").get("handle");t.exports=r,r.ee=o},{}],id:[function(e,t,n){function r(e){var t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===window?0:a(e,i,function(){return o++})}var o=1,i="nr@id",a=e("gos");t.exports=r},{}],loader:[function(e,t,n){function r(){if(!h++){var e=y.info=NREUM.info,t=l.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(e&&e.licenseKey&&e.applicationID&&t))return f.abort();c(b,function(t,n){e[t]||(e[t]=n)}),u("mark",["onload",a()],null,"api");var n=l.createElement("script");n.src="https://"+e.agent,t.parentNode.insertBefore(n,t)}}function o(){"complete"===l.readyState&&i()}function i(){u("mark",["domContent",a()],null,"api")}function a(){return(new Date).getTime()}var u=e("handle"),c=e(2),f=e("ee"),s=window,l=s.document,p="addEventListener",d="attachEvent",v=s.XMLHttpRequest,g=v&&v.prototype;NREUM.o={ST:setTimeout,CT:clearTimeout,XHR:v,REQ:s.Request,EV:s.Event,PR:s.Promise,MO:s.MutationObserver},e(1);var m=""+location,b={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-1016.min.js"},w=v&&g&&g[p]&&!/CriOS/.test(navigator.userAgent),y=t.exports={offset:a(),origin:m,features:{},xhrWrappable:w};l[p]?(l[p]("DOMContentLoaded",i,!1),s[p]("load",r,!1)):(l[d]("onreadystatechange",o),s[d]("onload",r)),u("mark",["firstbyte",a()],null,"api");var h=0},{}]},{},["loader"]);</script><link href="/images/oreilly/en_us/shop_favicon_16x16.ico" rel="shortcut icon" type="image/vnd.microsoft.icon"/>
		<script src="/includes/headerScripts.js" type="text/javascript"></script>
        
		

























  





<!-- MyBuys libraries and style sheet - Place in <head> element -->
<link href="http://t.p.mybuys.com/css/mbstyles.css" id="mybuysstyles" rel="stylesheet" type="text/css"/>
<script src="http://t.p.mybuys.com/js/mybuys3.js" type="text/javascript">
</script>
<script src="http://t.p.mybuys.com/clients/OREILLY/js/setup.js" type="text/javascript">
</script>


<!-- End MyBuys libraries and style sheet -->
		

























  





<!-- Tracking pixel here -->




	<!-- Facebook Pixel Code -->
	<script>
		!function(f, b, e, v, n, t, s) {
			if (f.fbq)
				return;
			n = f.fbq = function() {
				n.callMethod ? n.callMethod.apply(n, arguments) : n.queue
						.push(arguments)
			};
			if (!f._fbq)
				f._fbq = n;
			n.push = n;
			n.loaded = !0;
			n.version = '2.0';
			n.queue = [];
			t = b.createElement(e);
			t.async = !0;
			t.src = v;
			s = b.getElementsByTagName(e)[0];
			s.parentNode.insertBefore(t, s)
		}(window, document, 'script',
				'https://connect.facebook.net/en_US/fbevents.js');
		fbq('init', '1732687426968531');
		fbq('track', "PageView");
	</script>
	<noscript>
		</noscript></head><body class="main"><img height="1" src="https://www.facebook.com/tr?id=1732687426968531&amp;ev=PageView&amp;noscript=1" style="display: none" width="1"/>
	
	<!-- End Facebook Pixel Code -->



    


<script>var iPop_imagePath='/images/oreilly/en_us/';//use this image path along with the IPop.js</script>
<script src="/includes/lPop.js"></script>
<!-- removing duplicate autocomplete.js ORLY-634 -->
<div id="popdiv"></div>

<table border="0" cellpadding="0" cellspacing="0" class="mainLayoutTable" width="990">

  <tbody><tr>
	  <td class="navheaderbg" colspan="4">
		  <div>

























  











  
  
  	
    	<!--TopNav Start-->


























  









<script type="text/javascript">
  function checkIfDefault(keyword) {
    var defaultSearchTerm = "Search";
    if(keyword==defaultSearchTerm) {
      return '';
    }
    else {
      return keyword;
    }
  }
</script>


























  











<div id="header" style="width:990px;">

	
	
	
		<div class="logo">
			<a href="http://shop.oreilly.com"><img alt="O'Reilly Media, Inc." border="0" src="/images/oreilly/en_us/global/globalnav/logo01.gif"/></a>
		</div>
	



	<div class="tools">
		
		
		
		
		
			
				<p>
					
						
						
							<a class="signInLinkmy" href="https://members.oreilly.com/account/emedia">Your Account</a>
						
					
				</p>				
			
			
		
		
		


























  












<script type="text/javascript">
jQuery(document).ready(function(){
	jQuery("#globalBasket").popDown({navLink:"/basket.do?nav=%2Fcategory%2Fid%2F102151&gc=1",navOverClass:"globalCartNavOver",closeDelay:300});
});
</script>


<div class=" popDownWrapper globalCartWrapper " id="globalBasket" style="
		margin:2px 0px 0px 0px;
		width:239px;
		">

	<div class="popDownNav globalCartNav">

		<div class="globalCartBasketImg" style=""><img alt="Shopping" border="0" cart="" src="/images/oreilly/en_us/global/globalgraphics/basketicon.gif"/></div>
		<div class="globalCartBasketInfo" style="">
			<span class="navHeader">Shopping Cart</span>
			<span class="navQty">0 items</span> <span class="navTotal">$0.00</span>
		</div>
	</div>
	<div class="popDownLayer globalCartLayer" style="margin:3px 0px 0px 0px;">

		
		  
		  
			<div class="globalCartEmpty">Your shopping cart is empty.</div>
		  
		

	</div>
</div>


	</div>
				<!-- SP-2014-15990: Begin -->
				
				
				
				
					
				
					
				
					
				
					
				
					
				
					
				
					
				
				
				
				
				

			<div class="yui-skin-sam" id="search-box"> 
			<form action="https://ssearch.oreilly.com/" id="search-form" method="get" name="searchform">
			<div class="search"> 
			<fieldset> 
			<span id="search-input"> 
			<div class="searchInput"> 
			<span id="search-field"><input id="q" maxlength="64" name="q" onfocus="this.value=checkIfDefault(this.value);" type="text" value="Search"/></span> 
			</div> 
			<span id="search-button">
			
				<input align="top" alt="Search" border="0" src="/images/oreilly/en_us/global/globalgraphics/search_btn.gif" style="float:left" type="image" value="SEARCH"/>
			 
			</span> 
			</span> 
			<div id="autocomplete"></div> 
			</fieldset> 
			</div> 
			</form> 
			</div> 
				
				
				
				<!-- SP-2014-15990: End -->

</div>




    
  

  
  

  
  
  
  
  


</div>
			<div>

























  











  
  
  	
    	


























  








    <div id="globalInclude">
		<!-- csp/3201 in ncs was csp/3019 in ocs -->

<!-- Link to the core stylesheet -->
<link href="//shop.oreilly.com/text/oreilly/ml-combined.css" rel="stylesheet" type="text/css"/>


<style type="text/css">
#start-video-course-wrapper { display: none; }

/* table.mainLayoutTable > tbody > tr:nth-child(2) > td:nth-child(2) > div > table > tbody > tr > td:nth-child(3) { width: 272px;} */
#related-links { width: 272px; }
table.mainLayoutTable > tbody > tr:nth-child(2) > td:nth-child(2) > div > table > tbody > tr > td:nth-child(3) > div:nth-child(1) > div:nth-child(2) { display: none; }

#safariOption { display: block; background: #b9002d; padding:6px 11px 11px; color: #fff; }
#safariOption h3 { margin: 0 0 10px; padding: 0; color: #fff; font-size: 26px; line-height:30px; font-weight:300; letter-spacing:-.01em; font-family: 'guardian-text-oreilly', open-sans, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
#safariOption a.safari-button { display: block; padding: 8px 10px 7px; background: #fdb815; text-align: center; font-size: 16px; line-height:16px; font-weight:300; color: #000; text-transform: uppercase; letter-spacing:.02em; text-decoration: none; font-family: 'guardian-text-oreilly', open-sans, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
#safariOption a.safari-button:hover { background: #ffc439; text-decoration: none; }

#buyingOptionTable { display:none; margin-top:0; }
#buyingOptionTable * { font-family: 'guardian-text-oreilly', open-sans, Arial, sans-serif; }
#buyingOptionTable .box-heading {
  background: url(//shop.oreilly.com/images/oreilly/en_us/local/localgraphics/tabgradient_bg.gif) #F4F4F4; padding: 7px 10px 8px; font-size: 16px; line-height:16px; font-weight:600; color: #333; text-transform: uppercase; letter-spacing:.02em; font-family: 'guardian-text-oreilly', open-sans, Arial, sans-serif; }
#buyingOptionTable .goGreen { display: none; }
#buyingOptionTable .price { font-size: 16px; line-height:20px; font-weight:300; letter-spacing:-.01em; }
#buyingOptionTable .accQtyBox { top: 12px; left:150px; }
#buyingOptionTable td.optionsTd:nth-of-type(1) > div > div:nth-of-type(1) { width:140px !important; }
#buyingOptionTable td.optionsTd:nth-of-type(2) { padding: 14px 10px 8px 0px; text-align: right; }
</style>


<!-- Make updates to buybox -->
<script type="text/javascript">
setTimeout(function(){
  if(window.location.href.indexOf("/product/") > -1) {
    var buyingOptionsTable = document.getElementById("buyingOptionTable");
    var buyingOptionsVideo = false;

    //Remove extra spaces in price strings
    var priceNodes = buyingOptionsTable.getElementsByClassName("price");
    for (var i = 0; i < priceNodes.length; i++) {
      priceNodes[i].innerHTML = priceNodes[i].innerHTML.replace(/&nbsp;/,'');
      if (priceNodes[i].previousSibling.nodeValue.indexOf('Video') !== -1) {
        buyingOptionsVideo = true;
      }
    }

    var buyOptionsForms = buyingOptionsTable.getElementsByTagName("form");
    for (var i = 0; i < buyOptionsForms.length; i++) {
      var addToBasketInput = buyOptionsForms[i].getElementsByTagName("input")["addToBasket"];
      if (typeof(addToBasketInput) != 'undefined' && addToBasketInput != null) {
        buyOptionsForms[i].getElementsByTagName("input")["addToBasket"].setAttribute("src", "//cdn.oreillystatic.com/oreilly/images/ml_addtocart_btn.png");
      }
    }

    var buyingOptionHeading = buyingOptionsTable.getElementsByTagName("td")[0];
    if (buyingOptionsTable.getElementsByClassName("links")[0]) {
      //Add Safari block before buyingOptionsTable
      var buyingContainer = buyingOptionsTable.parentNode;
      var safariLink = buyingOptionsTable.getElementsByClassName("links")[0];
      var safariURL = safariLink.getElementsByTagName("a")[0].getAttribute("href");
      safariURL = safariURL.replace("utm_content=book+page","utm_content=buybox");
      var safariContainer = document.createElement('div');
      safariContainer.id = "safariOption";
      if (buyingOptionsVideo) {
        safariContainer.innerHTML = '<h3 class="safari-heading">Watch on Safari with 10-day <strong>free</strong> trial</h3><a href="' + safariURL + '" class="safari-button">Start your free trial</a>';
      } else {
        safariContainer.innerHTML = '<h3 class="safari-heading">Read on Safari with 10-day <strong>free</strong> trial</h3><a href="' + safariURL + '" class="safari-button">Start your free trial</a>';
      }
      buyingContainer.insertBefore(safariContainer, buyingOptionsTable);

      //Remove Safari block from after buyingOptionsTable
      safariLink.parentNode.removeChild(safariLink);
      //Remove buyingOptionTable heading row
      buyingOptionHeading.parentNode.removeChild(buyingOptionHeading);
    } else {
      //Replace image heading for buyingOptions with text
      buyingOptionHeading.innerHTML = '<div class="box-heading">Buying Options</div>';
    }
    
    buyingOptionsTable.style.display = "block";
  }
}, 500);

//Load Typekit fonts
(function(d) {
  var config = {
    kitId: 'gap0qyx',
    scriptTimeout: 3000,
    async: true
  },
  h=d.documentElement,t=setTimeout(function(){h.className=h.className.replace(/\bwf-loading\b/g,"")+" wf-inactive";},config.scriptTimeout),tk=d.createElement("script"),f=false,s=d.getElementsByTagName("script")[0],a;h.className+=" wf-loading";tk.src='https://fonts.oreillystatic.com/'+config.kitId+'.js';tk.async=true;tk.onload=tk.onreadystatechange=function(){a=this.readyState;if(f||a&&a!="complete"&&a!="loaded")return;f=true;clearTimeout(t);try{Typekit.load(config)}catch(e){}};s.parentNode.insertBefore(tk,s)
})(document);
</script>


<!-- Links to scripts -->
<script src="//shop.oreilly.com/text/oreilly/ml-min.js" type="text/javascript"></script>

<script type="text/javascript">
<!--

//Remove 'Final' from 'Final Release Date' on ER catalog pages
jQuery(document).ready(function() {
  jQuery('#buyingOptionTable').find('#earlyRelease').each(function() {
    var releaseDateDiv = jQuery('.AuthorName').parent('div').find('div:contains("Final Release Date")');
    releaseDateDiv.html(releaseDateDiv.text().replace('Final Release Date','Release Date'));
  });
});

//Hide prices for learning paths and conference video compilations/collections that are only available in Safari
jQuery(document).ready(function() {
  var hideLpTimeoutID = window.setTimeout(hideLpPrice, 100);
  function hideLpPrice() {
    jQuery('.thumbtext > .widthchange > .thumbheader > a:contains("Learning Path: ")').each(function() {
      $(this).closest('.widthchange').children().last('div').remove();
    });
    jQuery('.thumbtext > .widthchange > .thumbheader > a:contains("Video Compilation")').each(function() {
      $(this).closest('.widthchange').children().last('div').remove();
    });
    jQuery('.thumbtext > .widthchange > .thumbheader > a:contains("Video Collection")').each(function() {
      $(this).closest('.widthchange').children().last('div').remove();
    });
    window.clearTimeout(hideLpTimeoutID);
  }
});


//Display Recently Viewed at the bottom of catalog pages
var ormHideRecent = false;
//Loop through active cookies to find dotdpopup
var ormCookieArray = document.cookie.split(";");
var x,y;
for (var i = 0 ; i < ormCookieArray.length; i++) {
  x = ormCookieArray[i].substr(0, ormCookieArray[i].indexOf("="));
  y = ormCookieArray[i].substr(ormCookieArray[i].indexOf("=") + 1);
  x = x.replace(/^\s+|\s+$/g,"");
  if (x == "recentlyviewed") {
    if (y == "hidden") {
      ormHideRecent = true;
    }
  }
}

jQuery(document).ready(function() {
  //Collect all ML generated recently viewed items
  var mlRecentViews = jQuery('.RecentView');

  //If there are 1 or more items, continue
  if (mlRecentViews.length > 0) {
    //Make the base html for the recently viewed section a new object
    var recentlyViewed = jQuery('<div id="recently-viewed"><div class="overlay"><div class="hover-title"></div><div class="group"><a href="#" class="toggle"><span class="text">Recently Viewed</span></a><div class="items"></div></div><div class="bar"></div></div></div>');

    //For each recently viewed item, add a new node
    mlRecentViews.each(function() {
      var item = new Object();
      item.loc = jQuery(this).find('.thumbdiv a').attr('href');
      item.name = jQuery(this).find('.thumbdiv a img').attr('alt');
      item.imgPath = jQuery(this).find('.thumbdiv a img').attr('src').replace('bkt.gif','icon.gif');

      recentlyViewed.find('.items').append('<a href="' + item.loc + '" data-title="' + item.name + '" class="frame"><img src="' + item.imgPath + '" height="55" alt="' + item.name + '" /></a>');
    });

    //Remove ML recently viewed tab and content
    jQuery('body').append(recentlyViewed);
    jQuery('#tab_03_b').add('#tab_03_b_content').remove();
    if (ormHideRecent) {
      recentlyViewed.addClass('minimized');
    }

    //Add margin left to the bar when covers load
    var recentlyViewedGroup = recentlyViewed.find('.group');
    recentlyViewed.find('.frame > img').one('load', function() {
      recentlyViewed.find('.bar').css('margin-left', recentlyViewedGroup.outerWidth(true) + 'px');
    }).each(function() {
      if(this.complete) jQuery(this).load();
    });

    //Display and position titles on hover
    recentlyViewed.find('.frame').hover(function() {
      var hoverPosition = jQuery(this).position().left + (jQuery(this).width() / 2) - (recentlyViewed.find('.hover-title').outerWidth(true) / 2);

      recentlyViewed.find('.hover-title').text(jQuery(this).attr('data-title')).addClass('show').css('left', hoverPosition + 'px');
    }, function() {
      recentlyViewed.find('.hover-title').removeClass('show');
    });

    recentlyViewed.find('.toggle').click(function(e) {
      e.preventDefault();
      e.stopPropagation();

      var ormRecentlyViewedDate = new Date();
      ormRecentlyViewedDate.setTime(ormRecentlyViewedDate.getTime()+(90*24*60*60*1000));
      var ormRecentlyViewedExpires = "; expires="+ormRecentlyViewedDate.toGMTString();
      if (recentlyViewed.hasClass('minimized')) {
        recentlyViewed.removeClass('minimized');
        document.cookie = "recentlyviewed=visible; " + ormRecentlyViewedExpires + "; path=/";
      }
      else {
        recentlyViewed.addClass('minimized');
        document.cookie = "recentlyviewed=hidden; " + ormRecentlyViewedExpires + "; path=/";
      }
    });
  }
});
-->
</script>


<!-- New Nav -->
<!--[if lt IE 9]>
  <script>
    'article aside footer header nav section time'.replace(/\w+/g,function(n){document.createElement(n)})
  </script>
<![endif]-->


<!-- Nav CSS -->
<!-- Not Needed for Actual Site -->
<style type="text/css">

  nav a { text-decoration:none; }
  nav a:hover { text-decoration:underline; }

  nav p { margin:0 0 10px; }
  nav .fsl { font-size:16px; }
  nav .fsxl { font-size:24px; line-height:1.1em; }
  nav .fwb { font-weight:bold; }
  nav .fc-highlight { color:#b9002d; }
  nav .fc-dark { color:#222; }
  nav .fc-light { color:#fff; }
  nav .nm { margin:0; }
  nav .mb { margin-bottom:10px; }
  nav .mr { margin-right:10px; }
  nav .floatl { float:left; }
  nav .clear { clear:both; }

  nav  a.btn-green-arrow { display:block; float:left; padding:5px 10px 5px 22px; line-height:22px; font-size:20px; font-weight:bold; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; border:1px solid #f2ba12; color:#222; background: rgb(247,209,69); background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2QxNDUiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmNWM1MTciIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); background: -moz-linear-gradient(top,  rgba(247,209,69,1) 50%, rgba(245,197,23,1) 50%); background: -webkit-gradient(linear, left top, left bottom, color-stop(50%,rgba(247,209,69,1)), color-stop(50%,rgba(245,197,23,1))); background: -webkit-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background: -o-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background: -ms-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background: linear-gradient(to bottom,  rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7d145', endColorstr='#f5c517',GradientType=0 ); }
  nav a.btn-green-arrow:hover { text-decoration:none; }
  nav a.btn-green-arrow .arrow { display:block; min-height:18px; background:transparent url(//cdn.oreillystatic.com/oreilly/images/btn-green-arrow-overlay.png) left center no-repeat; margin:0 0 0 -25px; padding:0 0 0 25px; }
  nav a.btn-green-arrow.small { font-size:13px; line-height:18px;  padding:5px 10px 5px 22px !important; }

  ul#primarynav, #sf-menu-text-nav { display:none; }
</style>

<!-- Styles for page -->
<style type="text/css">
  /* Reset for browsers that don't automatically set semantic tags to block */
  article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section { display:block; }

  nav .self-clear:after { content:""; display:block; clear:both; height:0; }

#globalInclude { text-align:left !important; }
</style>


<!-- Nav Styles -->
<style type="text/css">
  nav { font-size:13px; }
  nav ul { list-style:none; margin:0; padding:0; }
  nav ul:after { content:''; display:block; clear:both; height:0; width:100%; }
  nav li { display:block; float:left; border-right:1px solid #ddd; line-height:1.4em; }
  nav li:last-child { border-right:0; }
  nav li > a { display:block; padding:8px 15px 7px; }
  nav li > a:hover { text-decoration:none; }
  nav li > a.category { font-size:16px; color:#b9002d !important; }

  nav ul#global-nav {
    display:block;
    background:#eee;
    background:-moz-linear-gradient(top, #fbfbfb 0%, #eeeeee 100%);
    background:-webkit-gradient(linear, left top, left bottom, color-stop(0%,#fbfbfb), color-stop(100%,#eeeeee));
    background:-webkit-linear-gradient(top, #fbfbfb 0%,#eeeeee 100%);
    background:-o-linear-gradient(top, #fbfbfb 0%,#eeeeee 100%);
    background:-ms-linear-gradient(top, #fbfbfb 0%,#eeeeee 100%);
    background:linear-gradient(to bottom, #fbfbfb 0%,#eeeeee 100%);
    border-top:1px solid #ddd;
    border-bottom:1px solid #ddd;
    height:auto;
    text-align:left;
  }
  nav #global-nav li > a { color:#333; }
  nav #global-nav li > a.current { color:#b9002d; background:#fff; border-bottom:1px solid #fff; margin-bottom:-1px; }
  /* Social Icons in Primary Nav */
  nav #global-nav .social { float:right; padding:9px 15px 0 0; border-right:0; height:auto; position:static; margin:0; }
  nav #global-nav .social .icon { display:block; float:left; padding:0; }
  nav #global-nav .social .icon:before { content:''; display:block; width:16px; height:16px; background-image:url(//cdn.oreillystatic.com/assets/images/social-icons-16.png); margin:0 0 0 8px; font-size:0; }
  nav #global-nav .social .icon.twitter:before { background-position:0 0; }
  nav #global-nav .social .icon.youtube:before { background-position:0 -20px; }
  nav #global-nav .social .icon.facebook:before { background-position:0 -40px; }
  nav #global-nav .social .icon.googleplus:before { background-position:0 -60px; }
  nav #global-nav .social .icon.rss:before { background-position:0 -80px; }


  nav #contextual-nav { display:block; clear:both; padding:0 7px 0; border-bottom:1px solid #ddd; }
  nav #contextual-nav > li { padding:8px 0 7px; position:relative; border-right:0; }
  nav #contextual-nav > li:after { content:''; display:block; top:8px; right:0; position:absolute; height:1.4em; border-right:1px solid #ddd; }
  nav #contextual-nav > li.no-divider:after { display:none; }
  nav #contextual-nav > li > a { color:#b9002d; padding:0; margin:0 8px; }
  nav #contextual-nav > li > a:hover { color:#333; }
  /* Labels in Secondary Nav */
  nav #contextual-nav > li.label { margin:0 0 0 8px; color:#999; }
  nav #contextual-nav > li.label:after { display:none; }
  /* Contacts in Secondary Nav */
  nav #contextual-nav li.contact { float:right; padding:9px 0 7px 0; font-weight:bold; font-size:12px; color:#333; }
  nav #contextual-nav li.contact:after { display:none; }
  nav #contextual-nav li.contact > a { padding:0; margin:0 8px 0 0; display:inline; color:#333; }


  nav li.sub > ul { /*display:none;*/ left:-9999px; top:-9999px; position:absolute; z-index:100; background:#fff; background:rgb(255,255,255); background:rgba(255,255,255,.98); -webkit-box-shadow:1px 1px 1px 0px rgba(0, 0, 0, .3); -moz-box-shadow:1px 1px 1px 0px rgba(0, 0, 0, .3); box-shadow:1px 1px 1px 0px rgba(0, 0, 0, .3); border-left:1px solid #ddd; margin-left:-1px; border:1px solid #ddd\9; border-top:0 solid #ddd\9; margin:0 -1px\9; }
  nav #global-nav > li.sub:hover > ul, nav #contextual-nav > li.sub:hover > ul { top:auto; left:auto; }
  nav ul.vertical > li.sub.hover > ul { top:auto; left:auto; }

  nav #contextual-nav ul.vertical > li.sub.hover > a { position:relative; }
  nav #contextual-nav ul.horizontal > li:hover > a { color:#b9002d; }

  nav #contextual-nav ul.vertical > li.sub.hover > a:after { right:0; border:solid transparent; content:" "; height:0; width:0; position:absolute; pointer-events:none; top:50%; border-color:#fff; border-left-color:#ccc; border-width:6px; margin-top:-6px; }
  nav #global-nav > li.sub:hover .title { background:rgba(255,255,255,.5); }
  nav #global-nav li.sub > ul.vertical li:hover > a, nav #contextual-nav ul li:hover > a { color:#b9002d; }
  nav li.sub > ul.vertical li { clear:both; width:100%; }
  nav li.sub > ul.vertical li:first-child { border-top:1px solid #ddd; } 
  nav #global-nav li.sub > ul.vertical li { border-top:1px solid #ddd; }
  nav li.sub > ul.vertical li:last-child { border-bottom:0; }

  nav #contextual-nav li.sub > ul.vertical { top:100%; border-top:1px solid #ddd; margin-left:-8px; border-left:1 solid #ddd\9; }
  nav #contextual-nav li.sub > ul.vertical > li { padding: 0; border:0; min-width:210px; max-width:300px; }
  nav #contextual-nav li.sub > ul.vertical > li > a, nav #contextual-nav li.sub > ul.horizontal > li > a { padding: 4px 15px 4px; margin-right:-2px; }
  nav #contextual-nav li.sub > ul:before, nav #contextual-nav li.sub > ul:after { content:''; display:block; clear:both; height:7px; }


  nav #contextual-nav li.sub > ul.horizontal { min-height:100%; margin-left:0px; border-top:1px solid #ddd; border-left:1 solid #ddd\9; border-top:0 solid #ddd\9; }
  nav #contextual-nav .vertical > li.sub.hover > ul.horizontal { left:100%; top:-1px; top:0px\9; }
  nav #contextual-nav li > ul li > a { color:#333; }
  nav #contextual-nav > li:hover > a { color:#222; }

  nav #contextual-nav ul.horizontal li { float:none; padding: 0; border:0; width:210px; position:relative; z-index:10; }
</style>


<!-- Advertisement Styles -->
<style type="text/css">
  nav #contextual-nav ul.horizontal li.ad.data { width:425px; min-height:560px; position:absolute; z-index:-1; top:0; bottom:0; left:0; margin-right:-55px; background:transparent url(//cdn.oreillystatic.com/oreilly/promos/ad-data-bg.png) left bottom no-repeat; }

  nav #contextual-nav ul.horizontal li.ad.photography { width:370px; min-height:560px; position:absolute; z-index:-1; top:0; bottom:0; left:0; background:transparent url(//cdn.oreillystatic.com/oreilly/promos/ad-photography-bg.jpg) left bottom no-repeat; }

  nav #contextual-nav ul.horizontal li.ad.programming { width:425px; min-height:585px; position:absolute; z-index:-1; top:0; bottom:0; left:0; margin-bottom:-25px; background:transparent url(//cdn.oreillystatic.com/oreilly/promos/ad-programming-bg.png) left bottom no-repeat; }
</style>


  <!-- Subnav JavaScript -->
  
<script type="text/javascript">

  //Initialize the site subnav dropdown menu
  function initSubNav() {

    var isMobile = (/iPhone|iPod|iPad|Android|BlackBerry|IEMobile|Opera Mini/).test(navigator.userAgent);
    if (isMobile) {
      //Prevent default interaction on clicks of drop-down menu titles
      jQuery('nav').find('.sub > .title').bind('click', function(e) {
        e.preventDefault();
      });
    }

    jQuery('#contextual-nav > .sub').bind('mouseover', function(e) {
      var that = jQuery(this);
      that.addClass('on');
    }).bind('mouseleave', function(e) {
      var that = jQuery(this);
      that.removeClass('on');
      that.find('.sub').removeClass('hover');
    });

    jQuery('nav').find('.vertical > .sub').bind('mouseover', function(e) {
      var that = jQuery(this);
      that.addClass('on');
      setTimeout(function() {
        if (that.hasClass('on')) {
          that.parent().children().removeClass('hover');
          that.addClass('hover');
        }
      },70);
    }).bind('mouseleave', function(e) {
      var that = jQuery(this);
      that.removeClass('on');
    });
  }

  //Break subnav lists into columns where 'split' classes have been added
  function breakNavColumns() {
    jQuery('nav').find('.horizontal').each(function() {
      jQuery(this).find('.split').each(function(i) {
      var category = jQuery(this).parent().find('.category:eq(0)').parent();
      jQuery(this).css('margin-top', - (jQuery(this).position().top - category.position().top - category.height()) + "px");
      jQuery(this).add(jQuery(this).nextAll(':not(.ad)')).css('margin-left', ((1+i) * (5 + jQuery(this).width())) + 'px');
      }); 
    });
  }
  
  //When the document is loaded, initialize the subnav dropdown menu and multi-column subnav lists
  jQuery(document).ready(function(jQuery) {
    breakNavColumns();
    initSubNav();
  });

</script>


<nav role="navigation">
  <ul id="global-nav" role="menubar">
    <li role="menuitem"><a href="http://www.oreilly.com">Home</a></li>
    <li role="menuitem"><a class="current" href="http://shop.oreilly.com">Shop Video Training &amp; Books</a></li>
    <li role="menuitem"><a href="http://radar.oreilly.com">Radar</a></li>
    <li role="menuitem"><a href="http://www.safaribooksonline.com/?utm_source=oreilly&amp;utm_medium=referral&amp;utm_campaign=publisher&amp;utm_content=nav">Safari Books Online</a></li>
    <li role="menuitem"><a href="http://conferences.oreilly.com/">Conferences</a></li>
    <!-- li role="menuitem"><a href="http://www.oreillyschool.com/">IT Courses &amp; Certificates</a></li -->
    <li class="social"><a class="icon twitter" href="http://twitter.com/oreillymedia" title="O'Reilly on Twitter"></a><a class="icon youtube" href="http://www.youtube.com/subscription_center?add_user=oreillymedia" title="O'Reilly on YouTube"></a><a class="icon facebook" href="http://www.facebook.com/OReilly" title="O'Reilly on Facebook"></a><a class="icon googleplus" href="https://plus.google.com/+oreillymedia/" title="O'Reilly on Google+"></a><a class="icon rss" href="http://oreilly.com/feeds/" title="Subscribe to Feed"></a></li>
  </ul>

  
    <!-- Store Subnav -->
    <!-- New CS -->
  <ul id="contextual-nav" role="menubar">
    <li aria-haspopup="true" class="sub" role="menuitem">
      <a class="title" href="http://shop.oreilly.com/category/browse-subjects.do"><span>Browse Subjects</span></a>
      <ul class="vertical" role="menu">
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/apple-mac.do">Apple</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/apple-mac.do">Apple</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apple-mac/apple-apps.do">Apple Apps</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apple-mac/apple-programming.do">Apple Programming</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apple-mac/ios-programming.do">iOS Programming</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apple-mac/ipad-iphone-ipod.do">iPad, iPhone, &amp; iPod</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apple-mac/mac.do">Mac</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/apps-software.do">Apps &amp; Software</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/apps-software.do">Apps &amp; Software</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apps-software/apple-apps.do">Apple Apps</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apps-software/design-apps.do">Design Apps</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apps-software/office-sharepoint.do">Office &amp; SharePoint</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apps-software/photo-apps.do">Photoshop &amp; Photo Apps</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/apps-software/web-mobile-apps.do">Web &amp; Mobile Apps</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/digital-audio-video.do">Audio &amp; Video</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/digital-audio-video.do">Audio &amp; Video</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/digital-audio-video/digital-audio.do">Audio</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/digital-audio-video/digital-video.do">Video</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/business.do">Business</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/business.do">Business</a>
            </li><li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/accounting-finance.do">Accounting &amp; Finance</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/agile.do">Agile &amp; Lean</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/business-management.do">Business Management &amp; Leadership</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/career-development.do">Career Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/entrepreneurship.do">Entrepreneurship</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/it-leadership.do">IT Leadership</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/project-management.do">Project Management</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/sales-marketing.do">Sales &amp; Marketing</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/business/society-culture.do">Society &amp; Culture</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/certification-training.do">Certification</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/certification-training.do">Certification</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/certification-training/cisco-certification.do">Cisco Certification</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/certification-training/linux-certification.do">Linux Certification</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/certification-training/microsoft-certification-training.do">Microsoft Certification &amp; Training</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/certification-training/pmp.do">PMP</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/certification-training/other-certification.do">Other Certification</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/data.do">Data</a>
          <ul class="horizontal" role="menu" style="width:370px;">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/data.do">Data</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/data/data-analysis-visualization.do">Data Analysis &amp; Visualization</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/data/data-topics.do">Data Topics</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/data/non-relational-databases.do">Non-Relational Databases</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/data/sas.do">SAS</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/data/oracle.do">Oracle</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/data/relational-databases.do">Relational Databases</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/data/sql-server.do">SQL Server</a></li>

          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/design.do">Design</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/design.do">Design</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/animation.do">Animation</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/design-apps.do">Design Apps</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/digital-publishing.do">Digital Publishing</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/game-design.do">Game Design &amp; Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/information-architecture.do">Information Architecture</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/mobile-design.do">Mobile Design &amp; Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/prod-design.do">Product Design</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/user-experience.do">User Experience</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/design/web-design.do">Web Design</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/science-math.do">Engineering, Math, &amp; Science</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/science-math.do">Engineering, Math, &amp; Science</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/science-math/bioinformatics.do">Bioinformatics</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/science-math/electrical-engineering.do">Electrical Engineering</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/science-math/hardware-engineering.do">Hardware Engineering</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/science-math/math.do">Math</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/science-math/science.do">Science</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/health.do">Health &amp; Wellness</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/health.do">Health &amp; Wellness</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/health/cancer.do">Cancer</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/health/disorders-diseases.do">Disorders &amp; Diseases</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/health/health-it.do">Health IT</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/health/mind-body.do">Mind &amp; Body</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/iot.do">IoT (Internet of Things)</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/iot.do">IoT (Internet of Things)</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/iot/diy-projects.do">DIY Projects</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/iot/electronics.do">Electronics</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/iot/hardware-hacking.do">Hardware Hacking</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/iot/lego-robotics.do">Lego &amp; Robotics</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/iot/make-craft.do">Make &amp; Craft</a></li>
          </ul>
        </li>

        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/microsoft.do">Microsoft</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/microsoft.do">Microsoft</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/dotnet.do">.NET &amp; Windows Programming</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/business-solutions.do">Microsoft Business Solutions</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/certification-training.do">Microsoft Certification &amp; Training</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/servers.do">Microsoft Servers</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/software-development.do">Microsoft Software Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/webdesign.do">Microsoft Web Design &amp; Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/office-sharepoint.do">Office &amp; Sharepoint</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/windows.do">Windows</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/windows-administration.do">Windows Administration</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/windows-phone.do">Windows Phone</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/microsoft/windows-phone-programming.do">Windows Phone Programming</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/mobile-devices.do">Mobile &amp; Ereader Devices</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/mobile-devices.do">Mobile &amp; Ereader Devices</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/mobile-devices/android.do">Android</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/mobile-devices/ipad-iphone-ipod.do">iPad, iPhone, &amp; iPad</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/mobile-devices/kindle.do">Kindle</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/mobile-devices/nook.do">Nook</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/mobile-devices/windows-phone.do">Windows Phone</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/mobile-devices/other-devices.do">Other Devices</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/networking.do">Networking</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/networking.do">Networking</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/networking/cisco.do">Cisco</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/networking/cloud-network-security.do">Cloud &amp; Network Security</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/networking/home-networking.do">Home Networking</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/networking/network-administration.do">Network Administration</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/networking/networking-topics.do">Networking Topics</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/personal-computing.do">Personal Computing</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/personal-computing.do">Personal Computing</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/personal-computing/home-networking.do">Home Networking</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/personal-computing/mac.do">Mac</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/personal-computing/pc.do">PC</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/personal-computing/windows.do">Windows</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/personal-growth.do">Personal Growth</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/personal-growth.do">Personal Growth</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/personal-growth/business-management-leadership.do">Business Management &amp; Leadership</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/personal-growth/career-development.do">Career Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/personal-growth/mind-body.do">Mind &amp; Body</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/personal-growth/personal-finance.do">Personal Finance</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/digital-photography.do">Photography</a>
          <ul class="horizontal" role="menu" style="width:370px;">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/digital-photography.do">Photography</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/digital-photography/camera-guides.do">Camera Guides</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/digital-photography/digital-photography.do">Digital Photography</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/digital-photography/photoshop.do">Photoshop &amp; Photo Apps</a></li>


          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/programming.do">Programming</a>
          <ul class="horizontal" role="menu" style="width:425px;">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/programming.do">Programming</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/dotnet.do">.NET &amp; Windows</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/agile.do">Agile</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/android-programming.do">Android</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/apple-programming.do">Apple</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/c.do">C/C++</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/csharp.do">C#</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/design-patterns.do">Design Patterns</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/game-design.do">Game Design &amp; Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/graphics-multimedia-programming.do">Graphics &amp; Multimedia</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/ios-programming.do">iOS</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/java.do">Java</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/javascript.do">JavaScript</a></li>
            <li class="split" role="menuitem" style="position:relative; z-index:10;"><a href="http://shop.oreilly.com/category/browse-subjects/programming/perl.do">Perl</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/mobile-design.do">Mobile Design &amp; Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/php.do">PHP</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/python.do">Python</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/r.do">R</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/ruby.do">Ruby &amp; Rails</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/secure-programming.do">Secure</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/software-engineering.do">Software Engineering</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/testing.do">Testing</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/windows-phone-programming.do">Windows Phone</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/programming/other-programming-languages.do">Other Languages</a></li>

          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/security.do">Security &amp; Cryptography</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/security.do">Security &amp; Cryptography</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/security/cloud-network-security.do">Cloud &amp; Network Security</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/security/computer-security.do">Computer Security</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/security/cryptography.do">Cryptography</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/security/secure-programming.do">Secure Programming</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/system-administration.do">System Administration</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/system-administration.do">System Administration</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/system-administration/cloud-administration.do">Cloud Administration</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/system-administration/email-administration.do">Email Administration</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/system-administration/linux-unix.do">Linux &amp; Unix</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/system-administration/microsoft-servers.do">Microsoft Servers</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/system-administration/performance.do">Performance</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/system-administration/system-admin-ops.do">System Admin &amp; Ops</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/system-administration/windows-administration.do">Windows Administration</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/tech-culture.do">Tech Culture</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/tech-culture.do">Tech Culture</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/tech-culture/game-strategy.do">Game Strategy</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/tech-culture/tech-culture.do">Tech Culture</a></li>
          </ul>
        </li>
        <li aria-haspopup="true" class="sub" role="menuitem">
          <a class="title" href="http://shop.oreilly.com/category/browse-subjects/web-development.do">Web Development</a>
          <ul class="horizontal" role="menu">
            <li role="menuitem"><a class="category" href="http://shop.oreilly.com/category/browse-subjects/web-development.do">Web Development</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/html-css.do">HTML &amp; CSS</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/javascript.do">JavaScript</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/performance.do">Performance</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/php.do">PHP</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/ruby-rails.do">Ruby &amp; Rails</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/sem-seo.do">SEM &amp; SEO</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/web-content-management.do">Web Content Management</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/web-design.do">Web Design</a></li>
            <li role="menuitem"><a href="http://shop.oreilly.com/category/browse-subjects/web-development/web-development.do">Web Development</a></li>
          </ul>
        </li>
      </ul>
    </li>
    <li role="menuitem"><a href="http://shop.oreilly.com/category/learning-path.do">Learning Paths</a></li>
    <li role="menuitem"><a href="http://shop.oreilly.com/category/videos.do">Video Training</a></li>
    <li role="menuitem"><a href="http://shop.oreilly.com/category/new.do">New</a></li>
    <li role="menuitem"><a href="http://shop.oreilly.com/category/upcoming.do">Upcoming</a></li>
    <li role="menuitem"><a href="http://shop.oreilly.com/category/early-release.do">Early Release</a></li>
    <li role="menuitem"><a href="http://shop.oreilly.com/category/bestselling.do">Bestselling</a></li>
    <li class="no-divider" role="menuitem"><a href="http://shop.oreilly.com/category/ebooks.do">Ebooks</a></li>

    <li class="contact vcard">
        <span class="tel">1-800-889-8969</span> / <span class="tel">707-827-7019</span> / <a class="email" href="mailto:orders@oreilly.com">orders@oreilly.com</a>
    </li>
  </ul>
  

  

  


  

  


</nav>

<div id="global-ad" style="text-align:center">
<!-- Safari  -->
<a href="https://www.safaribooksonline.com/?utm_medium=web+site=&amp;utm_source=oreilly.com&amp;utm_campaign=olt+launch&amp;utm_content=20161205+olt+orm+shop" onclick="var s=s_gi(s_account); s.products=';orm-store-global-safari'; s.eVar23='orm-store-global-safari'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');"><img alt="Get real answers from real experts - in real time. Learn more" height="160" src="//cdn.oreillystatic.com/assets/images/global-safari-lot-20161202.jpg" width="974"/></a>
</div>









	</div>






    
  

  
  

  
  
  
  
  


</div>
		</td>
	</tr>

	<tr valign="top">
    
      <td class="navleftbg" width="208">
        
          
        

























  











  
  
  	
    	


























  










 
  
		 
		  
    	
    		

























  










<script>
/** A global var to store the status of left nav anchor tag clicks. */
var ANCHOR_CLICK = false;

/**
 * Sets ANCHOR_CLICK to true/false based on left nav anchor tag clicks.
 * @param {boolean} bStatus Passed in as true if an anchor tag has been clicked.
 */
function setAnchorClick(bStatus){
	ANCHOR_CLICK = bStatus;
}

/**
 * Handles left nav div clicks, and stops them from continuing if an anchor tag has already been clicked.
 * @param {boolean} bStatus Passed in as true if an anchor tag has been clicked.
 */
function divClick(sUrl){
	if (!ANCHOR_CLICK){
		location.href = sUrl;
	}
}
</script>




  <table border="0" cellpadding="0" cellspacing="0" width="192">
  <tbody><tr style="vetical-align:top">
      <td><div class="navLeft2Off" onclick="divClick('/category/browse-subjects.do')" onmouseout="cssRollOver(this)" onmouseover="cssRollOver(this)" style="padding-left:15px;"><a href="/category/browse-subjects.do" onclick="setAnchorClick(true)">&lt; Browse Subjects</a></div>
<div class="navLeft1On" onclick="divClick('/category/browse-subjects/data.do')" style="padding-left:15px;"><a href="/category/browse-subjects/data.do" onclick="setAnchorClick(true)">Data</a></div>
<div class="navLeft2Off" onclick="divClick('/category/browse-subjects/data/data-analysis-visualization.do')" onmouseout="cssRollOver(this)" onmouseover="cssRollOver(this)" style="padding-left:15px;"><a href="/category/browse-subjects/data/data-analysis-visualization.do" onclick="setAnchorClick(true)">Data Analysis &amp; Visualization</a></div>
<div class="navLeft2Off" onclick="divClick('/category/browse-subjects/data/data-topics.do')" onmouseout="cssRollOver(this)" onmouseover="cssRollOver(this)" style="padding-left:15px;"><a href="/category/browse-subjects/data/data-topics.do" onclick="setAnchorClick(true)">Data Topics</a></div>
<div class="navLeft2Off" onclick="divClick('/category/browse-subjects/data/non-relational-databases.do')" onmouseout="cssRollOver(this)" onmouseover="cssRollOver(this)" style="padding-left:15px;"><a href="/category/browse-subjects/data/non-relational-databases.do" onclick="setAnchorClick(true)">Non-Relational Databases</a></div>
<div class="navLeft2Off" onclick="divClick('/category/browse-subjects/data/relational-databases.do')" onmouseout="cssRollOver(this)" onmouseover="cssRollOver(this)" style="padding-left:15px;"><a href="/category/browse-subjects/data/relational-databases.do" onclick="setAnchorClick(true)">Relational Databases</a></div>
<div class="navLeft2Off" onclick="divClick('/category/browse-subjects/data/oracle.do')" onmouseout="cssRollOver(this)" onmouseover="cssRollOver(this)" style="padding-left:15px;"><a href="/category/browse-subjects/data/oracle.do" onclick="setAnchorClick(true)">Oracle</a></div>
<div class="navLeft2Off" onclick="divClick('/category/browse-subjects/data/sas.do')" onmouseout="cssRollOver(this)" onmouseover="cssRollOver(this)" style="padding-left:15px;"><a href="/category/browse-subjects/data/sas.do" onclick="setAnchorClick(true)">SAS</a></div>
<div class="navLeft2Off" onclick="divClick('/category/browse-subjects/data/sql-server.do')" onmouseout="cssRollOver(this)" onmouseover="cssRollOver(this)" style="padding-left:15px;"><a href="/category/browse-subjects/data/sql-server.do" onclick="setAnchorClick(true)">SQL Server</a></div>
</td>
    </tr>
  </tbody></table>




<div><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="208"/></div>

    	
        
  
  



    
  

  
  

  
  
  
  
  



      </td>
    
		<td class="contentbg" width="8"><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="8"/></td>
		<td class="contentbg" width="766">
      
        <div>

























  












<div class="breadcrumb">
	
    
    	
    	

			

        
          
          
            <a class="breadcrumb" href="/home.do">Home</a>
          
        
        
            <span class="breadcrumb">&gt;</span>
        
    
    	
    	

			

        
          
          
            <a class="breadcrumb" href="/category/browse-subjects.do">Browse Subjects</a>
          
        
        
    
</div>
</div>
        
      
			<div>
    <!-- Directory LeftNav 02 -->
	<div><!-- csp/1796 -->
</div>
    <div><img border="0" height="14" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="766"/></div>
	<div>

























  










<script src="/mod/productquickview/includes/pqv.compressed.js"></script>

<style>.breadcrumb {display: none !important;}</style>
<!-- SC-2012-83268 -->

<script src="/text/pwr/engine/js/full.js" type="text/javascript"></script>

<table border="0" cellpadding="0" cellspacing="0" width="100%">

	
  <tbody><tr>
		<td colspan="2">
			
				
					
					
					<div class="directoryCategoryHeader"><h1>Data</h1></div>
				
				
			
		</td>

	</tr>


 	<tr>
		<td class="headerrule" colspan="2"><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="1"/></td>
	</tr>
  

  
  <tr>
      
        
        <td>
          
          


























  



















<div class="sortorderdd">
<table border="0" cellpadding="0" cellspacing="0">
  <form name="sortForm"></form>
  <tbody><tr>
    <td><span class="formlabel" id="formlabelsortby">Sort By</span></td>
    <td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="5"/></td>
    <td>
      <select name="sortBy" onchange="location.href=this[this.selectedIndex].value">
        
          <option selected="" value="?sortby=publicationDate&amp;sortType=1">Publication Date</option>
        
          <option value="?sortby=upcoming&amp;sortType=1">Upcoming</option>
        
          <option value="?sortby=bestSellers&amp;sortType=1">Bestselling</option>
        
      </select>
    </td>
  </tr>

</tbody></table>
</div></td>

        
        
          
            
          
          
        
        
          
  		      <td align="right">


























  



























<table border="0" cellpadding="0" cellspacing="0" class="pagination">
<form></form>
  <tbody><tr>
    
    







    
      
      
        <td><img border="0" src="/images/oreilly/en_us/local/localnav/previous_dis.gif"/></td>
      
    

    <td class="default">
		
			
			
				<select name="dirPage" onchange="if(this[this.selectedIndex].value != 0){location.href=this[this.selectedIndex].value}">
					
					
						
						<option selected="" value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=1">
							Page 1 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=2">
							Page 2 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=3">
							Page 3 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=4">
							Page 4 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=5">
							Page 5 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=6">
							Page 6 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=7">
							Page 7 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=8">
							Page 8 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=9">
							Page 9 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=10">
							Page 10 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=11">
							Page 11 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=12">
							Page 12 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=13">
							Page 13 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=14">
							Page 14 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=15">
							Page 15 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=16">
							Page 16 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=17">
							Page 17 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=18">
							Page 18 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=19">
							Page 19 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=20">
							Page 20 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=21">
							Page 21 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=22">
							Page 22 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=23">
							Page 23 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=24">
							Page 24 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=25">
							Page 25 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=26">
							Page 26 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=27">
							Page 27 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=28">
							Page 28 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=29">
							Page 29 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=30">
							Page 30 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=31">
							Page 31 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=32">
							Page 32 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=33">
							Page 33 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=34">
							Page 34 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=35">
							Page 35 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=36">
							Page 36 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=37">
							Page 37 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=38">
							Page 38 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=39">
							Page 39 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=40">
							Page 40 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=41">
							Page 41 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=42">
							Page 42 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=43">
							Page 43 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=44">
							Page 44 of 44
						</option>
					
					
				</select>
			
		
    </td>

    
      
 		
        <td align="right"><a href="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=2"><img alt="Next" border="0" src="/images/oreilly/en_us/local/localnav/next_off.gif"/></a></td>
      
      
    
  </tr>

</tbody></table>

</td>
          
          
        
      
  </tr>
  <tr>

	<td class="clearbg" colspan="2"><img border="0" height="15" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="1"/></td>

</tr>

<tr>
		<td colspan="2">

            <table border="0" cellpadding="0" cellspacing="0">
                <tbody><tr valign="top">

                    

                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920063698.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920063698.do"><img alt="Learning TensorFlow" border="0" src="http://akamaicovers.oreilly.com/images/0636920063698/rc_bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/0636920063698/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-0636920063698'; s.eVar23='shop-reader-searchin-0636920063698'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920063698.do">Learning TensorFlow</a>
				</div>
			

			
			
			<div class="AuthorName">By Tom Hope, Yehezkel S. Resheff, Itay Lieder</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									January 2017
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920063698.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920063698.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920063698.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920063698/ReviewSubmit.do?sortby=publicationDate?pageId=0636920063698.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920063698.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920063698.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256644" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $42.49</span>
					
					
					
					</span>
					</div>
				
					
					 
					<div content="SKUPrice" id="255778" iselectronicmedia="false " optionpk="100012">
					<span class="pricelabel">
					
						
						
							
							Print
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $49.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920064237.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920064237.do"><img alt="Reactive Python for Data Science" border="0" src="http://akamaicovers.oreilly.com/images/0636920064237/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920064237.do">Reactive Python for Data Science</a>
				</div>
			

			
			
			<div class="AuthorName">By Thomas Nield</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									January 2017
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920064237.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920064237.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920064237.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920064237/ReviewSubmit.do?sortby=publicationDate?pageId=0636920064237.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920064237.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920064237.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256632" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781785880568.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781785880568.do"><img alt="Object-Oriented JavaScript, 3rd Edition" border="0" src="http://akamaicovers.oreilly.com/images/9781785880568/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781785880568/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781785880568'; s.eVar23='shop-reader-searchin-9781785880568'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781785880568.do">Object-Oriented JavaScript, 3rd Edition</a>
				</div>
			

			
			
			<div class="AuthorName">By Ved Antani, Stoyan Stefanov</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									January 2017
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781785880568.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781785880568.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781785880568.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781785880568/ReviewSubmit.do?sortby=publicationDate?pageId=9781785880568.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781785880568.IP').style.display = "block";}
									else {document.getElementById('noReviews9781785880568.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256646" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $35.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781785280115.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781785280115.do"><img alt="Java for Data Science" border="0" src="http://akamaicovers.oreilly.com/images/9781785280115/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781785280115/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781785280115'; s.eVar23='shop-reader-searchin-9781785280115'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781785280115.do">Java for Data Science</a>
				</div>
			

			
			
			<div class="AuthorName">By Richard M Reese, Jennifer L. Reese</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									January 2017
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781785280115.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781785280115.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781785280115.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781785280115/ReviewSubmit.do?sortby=publicationDate?pageId=9781785280115.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781785280115.IP').style.display = "block";}
									else {document.getElementById('noReviews9781785280115.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256622" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920069317.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920069317.do"><img alt="Apache Spark 2 for Beginners" border="0" src="http://akamaicovers.oreilly.com/images/0636920069317/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920069317.do">Apache Spark 2 for Beginners</a>
				</div>
			

			
			
			<div class="AuthorName">By Rajanarayanan Thottuvaikkatumana</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920069317.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920069317.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920069317.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920069317/ReviewSubmit.do?sortby=publicationDate?pageId=0636920069317.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920069317.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920069317.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256559" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $124.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920068792.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920068792.do"><img alt="Learning QlikView® 12" border="0" src="http://akamaicovers.oreilly.com/images/0636920068792/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920068792.do">Learning QlikView® 12</a>
				</div>
			

			
			
			<div class="AuthorName">By B. Diane Blackwood</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920068792.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920068792.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920068792.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920068792/ReviewSubmit.do?sortby=publicationDate?pageId=0636920068792.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920068792.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920068792.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256526" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $124.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781785884856.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781785884856.do"><img alt="Building Recommendation Engines" border="0" src="http://akamaicovers.oreilly.com/images/9781785884856/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781785884856/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781785884856'; s.eVar23='shop-reader-searchin-9781785884856'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781785884856.do">Building Recommendation Engines</a>
				</div>
			

			
			
			<div class="AuthorName">By Suresh K. Gorakala</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781785884856.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781785884856.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781785884856.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781785884856/ReviewSubmit.do?sortby=publicationDate?pageId=9781785884856.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781785884856.IP').style.display = "block";}
									else {document.getElementById('noReviews9781785884856.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256520" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781783551811.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781783551811.do"><img alt="Mastering Text Mining with R" border="0" src="http://akamaicovers.oreilly.com/images/9781783551811/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781783551811/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781783551811'; s.eVar23='shop-reader-searchin-9781783551811'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781783551811.do">Mastering Text Mining with R</a>
				</div>
			

			
			
			<div class="AuthorName">By Ashish Kumar, Avinash Paul</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781783551811.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781783551811.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781783551811.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781783551811/ReviewSubmit.do?sortby=publicationDate?pageId=9781783551811.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781783551811.IP').style.display = "block";}
									else {document.getElementById('noReviews9781783551811.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256518" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $31.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920068716.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920068716.do"><img alt="Python Machine Learning Projects" border="0" src="http://akamaicovers.oreilly.com/images/0636920068716/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920068716.do">Python Machine Learning Projects</a>
				</div>
			

			
			
			<div class="AuthorName">By Alexander T. Combs</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920068716.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920068716.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920068716.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920068716/ReviewSubmit.do?sortby=publicationDate?pageId=0636920068716.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920068716.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920068716.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256548" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $124.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781785880100.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781785880100.do"><img alt="Apache Spark for Data Science Cookbook" border="0" src="http://akamaicovers.oreilly.com/images/9781785880100/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781785880100/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781785880100'; s.eVar23='shop-reader-searchin-9781785880100'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781785880100.do">Apache Spark for Data Science Cookbook</a>
				</div>
			

			
			
			<div class="AuthorName">By Padma Priya Chitturi</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781785880100.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781785880100.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781785880100.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781785880100/ReviewSubmit.do?sortby=publicationDate?pageId=9781785880100.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781785880100.IP').style.display = "block";}
									else {document.getElementById('noReviews9781785880100.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256482" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $35.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920053255.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920053255.do"><img alt="Solutions Architecture" border="0" src="http://akamaicovers.oreilly.com/images/0636920053255/rc_bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/0636920053255/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-0636920053255'; s.eVar23='shop-reader-searchin-0636920053255'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920053255.do">Solutions Architecture</a>
				</div>
			

			
			
			<div class="AuthorName">By Ted Malaska</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920053255.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920053255.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920053255.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920053255/ReviewSubmit.do?sortby=publicationDate?pageId=0636920053255.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920053255.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920053255.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256330" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $36.99</span>
					
					
					
					</span>
					</div>
				
					
					 
					<div content="SKUPrice" id="255798" iselectronicmedia="false " optionpk="100012">
					<span class="pricelabel">
					
						
						
							
							Print
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $49.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781786467201.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781786467201.do"><img alt="Fast Data Processing Systems with SMACK Stack" border="0" src="http://akamaicovers.oreilly.com/images/9781786467201/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781786467201/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781786467201'; s.eVar23='shop-reader-searchin-9781786467201'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781786467201.do">Fast Data Processing Systems with SMACK Stack</a>
				</div>
			

			
			
			<div class="AuthorName">By Raul Estrada</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781786467201.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781786467201.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781786467201.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781786467201/ReviewSubmit.do?sortby=publicationDate?pageId=9781786467201.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781786467201.IP').style.display = "block";}
									else {document.getElementById('noReviews9781786467201.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256462" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920052555.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920052555.do"><img alt="Applied Text Analysis with Python" border="0" src="http://akamaicovers.oreilly.com/images/0636920052555/rc_bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/0636920052555/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-0636920052555'; s.eVar23='shop-reader-searchin-0636920052555'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920052555.do">Applied Text Analysis with Python</a>
				</div>
			

			
			
			<div class="AuthorName">By Benjamin Bengfort, Rebecca Bilbro, Tony Ojeda</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920052555.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920052555.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920052555.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920052555/ReviewSubmit.do?sortby=publicationDate?pageId=0636920052555.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920052555.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920052555.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256370" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $33.99</span>
					
					
					
					</span>
					</div>
				
					
					 
					<div content="SKUPrice" id="254940" iselectronicmedia="false " optionpk="100012">
					<span class="pricelabel">
					
						
						
							
							Print
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920064398.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920064398.do"><img alt="Learning Path: SQL for Business Users" border="0" src="http://akamaicovers.oreilly.com/images/0636920064398/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920064398.do">Learning Path: SQL for Business Users</a>
				</div>
			

			
			
			<div class="AuthorName">By O'Reilly Media, Inc.</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920064398.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920064398.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920064398.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920064398/ReviewSubmit.do?sortby=publicationDate?pageId=0636920064398.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920064398.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920064398.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256276" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $459.82</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781785885433.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781785885433.do"><img alt="Practical Business Intelligence" border="0" src="http://akamaicovers.oreilly.com/images/9781785885433/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781785885433/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781785885433'; s.eVar23='shop-reader-searchin-9781785885433'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781785885433.do">Practical Business Intelligence</a>
				</div>
			

			
			
			<div class="AuthorName">By Ahmed Sherif</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781785885433.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781785885433.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781785885433.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781785885433/ReviewSubmit.do?sortby=publicationDate?pageId=9781785885433.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781785885433.IP').style.display = "block";}
									else {document.getElementById('noReviews9781785885433.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256604" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920063797.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920063797.do"><img alt="Learning Path: Advanced Architecture for Big Data Applications" border="0" src="http://akamaicovers.oreilly.com/images/0636920063797/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920063797.do">Learning Path: Advanced Architecture for Big Data Applications</a>
				</div>
			

			
			
			<div class="AuthorName">By O'Reilly Media, Inc.</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920063797.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920063797.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920063797.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920063797/ReviewSubmit.do?sortby=publicationDate?pageId=0636920063797.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920063797.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920063797.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256187" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $409.95</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920062974.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920062974.do"><img alt="Learning Path: Getting Up and Running with Apache Spark" border="0" src="http://akamaicovers.oreilly.com/images/0636920062974/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920062974.do">Learning Path: Getting Up and Running with Apache Spark</a>
				</div>
			

			
			
			<div class="AuthorName">By O'Reilly Media, Inc.</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920062974.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920062974.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920062974.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920062974/ReviewSubmit.do?sortby=publicationDate?pageId=0636920062974.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920062974.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920062974.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256159" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $369.95</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781629604084.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781629604084.do"><img alt="Market Data Analysis Using JMP" border="0" src="http://akamaicovers.oreilly.com/images/9781629604084/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781629604084/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781629604084'; s.eVar23='shop-reader-searchin-9781629604084'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781629604084.do">Market Data Analysis Using JMP</a>
				</div>
			

			
			
			<div class="AuthorName">By Walter R. Paczkowski</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781629604084.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781629604084.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781629604084.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781629604084/ReviewSubmit.do?sortby=publicationDate?pageId=9781629604084.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781629604084.IP').style.display = "block";}
									else {document.getElementById('noReviews9781629604084.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256498" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $36.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920055495.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920055495.do"><img alt="A Guide to Improving Data Integrity and Adoption" border="0" src="http://akamaicovers.oreilly.com/images/0636920055495/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/0636920055495/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-0636920055495'; s.eVar23='shop-reader-searchin-0636920055495'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920055495.do">A Guide to Improving Data Integrity and Adoption</a>
				</div>
			

			
			
			<div class="AuthorName">By Jessica Roper</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920055495.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920055495.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920055495.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920055495/ReviewSubmit.do?sortby=publicationDate?pageId=0636920055495.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920055495.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920055495.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256151" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $0.00</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781785887918.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781785887918.do"><img alt="Principles of Data Science" border="0" src="http://akamaicovers.oreilly.com/images/9781785887918/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781785887918/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781785887918'; s.eVar23='shop-reader-searchin-9781785887918'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781785887918.do">Principles of Data Science</a>
				</div>
			

			
			
			<div class="AuthorName">By Sinan Ozdemir</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781785887918.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781785887918.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781785887918.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781785887918/ReviewSubmit.do?sortby=publicationDate?pageId=9781785887918.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781785887918.IP').style.display = "block";}
									else {document.getElementById('noReviews9781785887918.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256444" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $35.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781782172161.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781782172161.do"><img alt="Data Acquisition Using LabVIEW" border="0" src="http://akamaicovers.oreilly.com/images/9781782172161/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781782172161/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781782172161'; s.eVar23='shop-reader-searchin-9781782172161'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781782172161.do">Data Acquisition Using LabVIEW</a>
				</div>
			

			
			
			<div class="AuthorName">By Behzad Ehsani</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781782172161.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781782172161.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781782172161.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781782172161/ReviewSubmit.do?sortby=publicationDate?pageId=9781782172161.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781782172161.IP').style.display = "block";}
									else {document.getElementById('noReviews9781782172161.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256400" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $27.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920063773.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920063773.do"><img alt="Learning Path: A Beginner's Guide to Architecting Big Data Applications" border="0" src="http://akamaicovers.oreilly.com/images/0636920063773/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920063773.do">Learning Path: A Beginner's Guide to Architecting Big Data Applications</a>
				</div>
			

			
			
			<div class="AuthorName">By O'Reilly Media, Inc.</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920063773.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920063773.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920063773.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920063773/ReviewSubmit.do?sortby=publicationDate?pageId=0636920063773.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920063773.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920063773.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256051" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $469.89</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781786460097.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781786460097.do"><img alt="Tableau 10.0 Best Practices" border="0" src="http://akamaicovers.oreilly.com/images/9781786460097/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781786460097/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781786460097'; s.eVar23='shop-reader-searchin-9781786460097'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781786460097.do">Tableau 10.0 Best Practices</a>
				</div>
			

			
			
			<div class="AuthorName">By Jenny Zhang</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781786460097.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781786460097.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781786460097.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781786460097/ReviewSubmit.do?sortby=publicationDate?pageId=9781786460097.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781786460097.IP').style.display = "block";}
									else {document.getElementById('noReviews9781786460097.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256358" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $35.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920061977.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920061977.do"><img alt="Practical Tableau" border="0" src="http://akamaicovers.oreilly.com/images/0636920061977/rc_bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/0636920061977/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-0636920061977'; s.eVar23='shop-reader-searchin-0636920061977'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920061977.do">Practical Tableau</a>
				</div>
			

			
			
			<div class="AuthorName">By Ryan  Sleeper</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920061977.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920061977.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920061977.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920061977/ReviewSubmit.do?sortby=publicationDate?pageId=0636920061977.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920061977.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920061977.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256110" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $32.99</span>
					
					
					
					</span>
					</div>
				
					
					 
					<div content="SKUPrice" id="256109" iselectronicmedia="false " optionpk="100012">
					<span class="pricelabel">
					
						
						
							
							Print
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781629609799.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781629609799.do"><img alt="What's New in SAS 9.4" border="0" src="http://akamaicovers.oreilly.com/images/9781629609799/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781629609799/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781629609799'; s.eVar23='shop-reader-searchin-9781629609799'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781629609799.do">What's New in SAS 9.4</a>
				</div>
			

			
			
			<div class="AuthorName">By SAS Institute</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781629609799.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781629609799.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781629609799.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781629609799/ReviewSubmit.do?sortby=publicationDate?pageId=9781629609799.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781629609799.IP').style.display = "block";}
									else {document.getElementById('noReviews9781629609799.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256281" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $0.00</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920057390.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920057390.do"><img alt="Getting Started with Microsoft Power BI" border="0" src="http://akamaicovers.oreilly.com/images/0636920057390/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920057390.do">Getting Started with Microsoft Power BI</a>
				</div>
			

			
			
			<div class="AuthorName">By Allen  G.  Taylor</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920057390.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920057390.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920057390.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920057390/ReviewSubmit.do?sortby=publicationDate?pageId=0636920057390.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920057390.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920057390.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256351" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $49.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920054368.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920054368.do"><img alt="Learning Presto DB" border="0" src="http://akamaicovers.oreilly.com/images/0636920054368/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920054368.do">Learning Presto DB</a>
				</div>
			

			
			
			<div class="AuthorName">By Matt  Fuller</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920054368.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920054368.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920054368.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920054368/ReviewSubmit.do?sortby=publicationDate?pageId=0636920054368.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920054368.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920054368.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256124" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $59.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    

                        
                            </tr>
                            <tr valign="top">
                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920064008.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920064008.do"><img alt="AI for Business" border="0" src="http://akamaicovers.oreilly.com/images/0636920064008/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920064008.do">AI for Business</a>
				</div>
			

			
			
			<div class="AuthorName">By O'Reilly Media, Inc.</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920064008.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920064008.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920064008.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920064008/ReviewSubmit.do?sortby=publicationDate?pageId=0636920064008.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920064008.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920064008.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="255923" iselectronicmedia="true " optionpk="100021">
					<span class="pricelabel">
					
						
						
							
							Video
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $99.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '9781784397692.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/9781784397692.do"><img alt="Mastering Tableau" border="0" src="http://akamaicovers.oreilly.com/images/9781784397692/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/9781784397692/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-9781784397692'; s.eVar23='shop-reader-searchin-9781784397692'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/9781784397692.do">Mastering Tableau</a>
				</div>
			

			
			
			<div class="AuthorName">By David Baldwin</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews9781784397692.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '9781784397692.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews9781784397692.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/9781784397692/ReviewSubmit.do?sortby=publicationDate?pageId=9781784397692.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews9781784397692.IP').style.display = "block";}
									else {document.getElementById('noReviews9781784397692.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256139" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                        	<td><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="10"/></td>
 						
                    

                        

                        <td class="thumbtext">

                            
                                
                            

























  












  
    
      
      
      
      
      
      
      
	  
    

























  




















<!-- SC-2012-83268 commented <script type="text/javascript" src="/text/pwr/engine/js/full.js"></script> -->
	<script type="text/javascript">
		var pr_locale = 'en_US';
		var pr_zip_location='/text';
		var pr_style_sheet='/includes/reviews_social.css ';
		var pr_page_id = '0636920053170.IP'; 
	</script>












  


  






  


  






  
  



	




	<div style="float:left;">

		 
		 
  		 
  		 
  		

		<div class="thumbcontainer">
		  
			
			
			  <div class="thumbdiv"><a href="/product/0636920053170.do"><img alt="Practical Machine Learning with H2O" border="0" src="http://akamaicovers.oreilly.com/images/0636920053170/bkt.gif" width="85"/></a></div>
			
		  
		  
		  
		  
			
				<a href="https://library.oreilly.com/book/0636920053170/_/toc" id="search-inside" onclick="var s=s_gi(s_account); s.products=';shop-reader-searchin-0636920053170'; s.eVar23='shop-reader-searchin-0636920053170'; s.events='event5'; s.linkTrackVars='eVar23,products,events'; s.linkTrackEvents='event5'; s.tl(this,'o','Ad Click');">Search Inside and Read</a>
			
		  
		</div>

	</div>


	
		
		
			<div class="widthchange" style="float:left; width:154px;">
		
	
  
		 
		 
  		 
  		 

		

			
				<div class="thumbheader">
					<a href="/product/0636920053170.do">Practical Machine Learning with H2O</a>
				</div>
			

			
			
			<div class="AuthorName">By Darren Cook</div>
			
			
			 
			 
			 
				
			 
				
				
					

						<span class="directorydate">
							
							

							
							

							
								
								
									December 2016
								
							
						</span>
					
				
			  
			
			

			
			
		
			<!-- Begin PowerReviews snippet -->
		<div class="powerblock">
			<div class="CategorySnippet">
				<div class="ReviewSnippet">
					<div id="hasReviews0636920053170.IP" style="display:none">
						<script type="text/javascript">
						        POWERREVIEWS.display.snippet(document, {
								pr_page_id : '0636920053170.IP',
								pr_read_review : '',
								pr_write_review : ''
							});
							
							
						</script>
					</div>
					<div id="noReviews0636920053170.IP" style="display:none;padding:0px 0 8px 0;">
								<script type="text/javascript">document.write('Be the first to <a href="/product/0636920053170/ReviewSubmit.do?sortby=publicationDate?pageId=0636920053170.IP">write a review <br/></a>')</script>
					</div>
					<script type="text/javascript">
								var pr_data_callback = function (info) { //create this info object to pass to the call-back function, and it runs the logic
									if (info.getFullReviewCount() > 0) { //if we have reviews on this product
										document.getElementById('hasReviews0636920053170.IP').style.display = "block";}
									else {document.getElementById('noReviews0636920053170.IP').style.display = "none";}
									};
								prData (pr_data_callback);   //now pass the function to our javascript function for evaluation
					 </script>
				</div>
				</div>
				</div>
	<!-- End PowerReviews snippet -->
				<div style="clear:both;">
					
						
					



























  















	
	
		
	










	
	
		
			
			
				
				
					
					 
					<div content="SKUPrice" id="256036" iselectronicmedia="true " optionpk="100011">
					<span class="pricelabel">
					
						
						
							
							Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $33.99</span>
					
					
					
					</span>
					</div>
				
					
					 
					<div content="SKUPrice" id="256037" iselectronicmedia="true " optionpk="100013">
					<span class="pricelabel">
					
						
						
							
							Print &amp; Ebook
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $43.99</span>
					
					
					
					</span>
					</div>
				
					
					 
					<div content="SKUPrice" id="252948" iselectronicmedia="false " optionpk="100012">
					<span class="pricelabel">
					
						
						
							
							Print
						
					:
					
					
					
					
					
					
					
					
					<span class="price"> $39.99</span>
					
					
					
					</span>
					</div>
				
			
		
	



				</div>
			

		

	</div>



  


                        </td>

                        
                    
                </tr>
			</tbody></table>

	    </td>
  </tr>
  
  
  <tr>
		<td class="headerrule" colspan="2"><img border="0" height="1" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="1"/></td>
	</tr>
	<tr>
		<td class="clearbg" colspan="2"><img border="0" height="5" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="1"/></td>
	</tr>
  
	<tr>
		<td align="right" class="clearbg" colspan="2">


























  



























<table border="0" cellpadding="0" cellspacing="0" class="pagination">
<form></form>
  <tbody><tr>
    
    







    
      
      
        <td><img border="0" src="/images/oreilly/en_us/local/localnav/previous_dis.gif"/></td>
      
    

    <td class="default">
		
			
			
				<select name="dirPage" onchange="if(this[this.selectedIndex].value != 0){location.href=this[this.selectedIndex].value}">
					
					
						
						<option selected="" value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=1">
							Page 1 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=2">
							Page 2 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=3">
							Page 3 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=4">
							Page 4 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=5">
							Page 5 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=6">
							Page 6 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=7">
							Page 7 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=8">
							Page 8 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=9">
							Page 9 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=10">
							Page 10 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=11">
							Page 11 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=12">
							Page 12 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=13">
							Page 13 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=14">
							Page 14 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=15">
							Page 15 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=16">
							Page 16 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=17">
							Page 17 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=18">
							Page 18 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=19">
							Page 19 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=20">
							Page 20 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=21">
							Page 21 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=22">
							Page 22 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=23">
							Page 23 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=24">
							Page 24 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=25">
							Page 25 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=26">
							Page 26 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=27">
							Page 27 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=28">
							Page 28 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=29">
							Page 29 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=30">
							Page 30 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=31">
							Page 31 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=32">
							Page 32 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=33">
							Page 33 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=34">
							Page 34 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=35">
							Page 35 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=36">
							Page 36 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=37">
							Page 37 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=38">
							Page 38 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=39">
							Page 39 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=40">
							Page 40 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=41">
							Page 41 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=42">
							Page 42 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=43">
							Page 43 of 44
						</option>
					
						
						<option value="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=44">
							Page 44 of 44
						</option>
					
					
				</select>
			
		
    </td>

    
      
 		
        <td align="right"><a href="/category/browse-subjects/data.do?sortby=publicationDate&amp;page=2"><img alt="Next" border="0" src="/images/oreilly/en_us/local/localnav/next_off.gif"/></a></td>
      
      
    
  </tr>

</tbody></table>

</td>
	</tr>
  
  


  

</tbody></table>
<style>
.orm .scrollable-list .left {z-index: 5 !important;}
.orm .scrollable-list .right {z-index: 5 !important;}
</style></div>

	<table cellpadding="0" cellspacing="0">
		<tbody><tr>
			<td></td>
			<td></td>
			<td></td>
		</tr>
	</tbody></table>

	</div>
			<div><img border="0" height="15" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="766"/></div>
		</td>
		<td class="contentbg" width="8"><img border="0" height="450" src="/images/oreilly/en_us/global/globalgraphics/spacer01.gif" width="8"/></td>
	</tr>


	
	<tr>
		<td class="eightPixel" colspan="4"> </td>
	</tr>

	
	<tr valign="bottom">
		<td align="center" class="navfooterbg" colspan="4">

























  











  
  
  	
    	<!--BottomNav Start-->


























  









	<!-- autocomplete scripts --> 
<script src="//ajax.googleapis.com/ajax/libs/yui/2.6.0/build/utilities/utilities.js" type="text/javascript"></script> 
<script src="//ajax.googleapis.com/ajax/libs/yui/2.6.0/build/datasource/datasource-min.js" type="text/javascript"></script> 
<script src="//ajax.googleapis.com/ajax/libs/yui/2.6.0/build/autocomplete/autocomplete-min.js" type="text/javascript"></script> 
<script src="//content.atomz.com/sp10049ed9/publish/autocomplete_data.js?sp_js_cache_ver=14" type="text/javascript"></script>










	

	

	

	






	



	<!-- ncs 3141 071014 --><table border="0" cellpadding="0" cellspacing="0" class="emailSignUpTable">
  <tbody><tr>
    <td style="width:516px;">
    
    </td>

    <td>
    
    </td>

    <td style="text-align:right">
      <ul class="utility">
        <li><a class="twitter" href="http://twitter.com/oreillymedia" target="_blank"><span class="hidden">Twitter</span></a></li>
        <li><a class="youtube" href="http://youtube.com/oreillymedia" target="_blank"><span class="hidden">YouTube</span></a></li>
        <li><a class="slideshare" href="http://slideshare.net/oreillymedia" target="_blank"><span class="hidden">Slideshare</span></a></li>
        <li><a class="facebook" href="http://www.facebook.com/OReilly" target="_blank"><span class="hidden">Facebook</span></a></li>
        <li><a class="googleplus" href="https://plus.google.com/108442503368488643007?prsrc=3"><span class="hidden">Google Plus</span></a></li>
        <li><a class="rss" href="http://feeds.feedburner.com/oreilly/all" target="_blank"><span class="hidden">RSS</span></a></li>
        <li><a class="all-rss" href="http://oreilly.com/feeds/">View All RSS Feeds &gt;</a></li>
      </ul>
    </td>
  </tr>
</tbody></table>





<div id="multiColumnFooter">

	<div id="footer-branding">
		<p class="copyright">© 2016, O'Reilly Media, Inc.</p>
<p><span class="phone-number">(707) 827-7019</span><span class="phone-number">(800) 889-8969</span></p>
<p class="trademarks">All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.</p><!-- 2013 -->

	</div>

	
	<div class="contentSectionBlock">
		
			
				

				<!-- style="width:25%;" -->

				<div class="contentSectionContainer">
					<span class="contentSection" id="footerColumn-1">
						<h3>About O'Reilly</h3>
						<ul>
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/academic/">Academic Solutions</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/jobs/">Jobs</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/contact.html">Contacts</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/about/">Corporate Information</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://press.oreilly.com/index.html">Press Room</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/oreilly/privacy.csp">Privacy Policy</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/terms/">Terms of Service</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/oreilly/author/intro.csp">Writing for O'Reilly</a></li>
									
									
								
							
						
						</ul>
					</span>
				</div>
			
		
			
				

				<!-- style="width:25%;" -->

				<div class="contentSectionContainer">
					<span class="contentSection" id="footerColumn-2">
						<h3>Community</h3>
						<ul>
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/authors/">Authors</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/community/">Community &amp; Featured Users</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://forums.oreilly.com/">Forums</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="https://members.oreilly.com/">Membership</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://elists.oreilly.com/">Newsletters</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://answers.oreilly.com/">O'Reilly Answers</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/feeds/">RSS Feeds</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://ug.oreilly.com/">User Groups</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://chimera.labs.oreilly.com/">O'Reilly Chimera (beta)</a></li>
									
									
								
							
						
						</ul>
					</span>
				</div>
			
		
			
				

				<!-- style="width:25%;" -->

				<div class="contentSectionContainer">
					<span class="contentSection" id="footerColumn-3">
						<h3>Partner Sites</h3>
						<ul>
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://makezine.com/">makezine.com</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://makerfaire.com/">makerfaire.com</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://craftzine.com/">craftzine.com</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://www.ignitetalks.io/">Ignite Talks</a></li>
									
									
								
							
						
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://blogs.forbes.com/oreillymedia/">O'Reilly Insights on Forbes.com</a></li>
									
									
								
							
						
							
						
							
						
						</ul>
					</span>
				</div>
			
		
			
				

				<!-- style="width:24%;" -->

				<div class="contentSectionContainer">
					<span class="contentSection" id="footerColumn-4">
						<h3>Shop O'Reilly</h3>
						<ul>
						
							
								
								
								
									
									
									
								<li><a class="footer" href="/category/customer-service.do">Customer Service</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="/category/customer-service.do">Contact Us</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="/category/customer-service/shipping-information.do">Shipping Information</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="/category/customer-service/ordering-payment.do">Ordering &amp; Payment</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="http://oreilly.com/affiliates/">Affiliate Program</a></li>
									
									
								
							
						
							
								
								
								
									
									
									
								<li><a class="footer" href="/category/customer-service/oreilly-guarantee.do">The O'Reilly Guarantee</a></li>
									
									
								
							
						
							
						
							
						
							
						
						</ul>
					</span>
				</div>
			
		
		<div style="clear:both;"></div>
	</div>

	
	

	
	
</div>
<!--BottomNav End-->


    
  

  
  

  
  
  
  
  


</td>
	</tr>
</tbody></table>


  

























  










      

























  







<!-- Omniture Reporting Support -->
<!-- SiteCatalyst code version: H.20.3.
Copyright 1997-2009 Omniture, Inc. More info available at
http://www.omniture.com -->

<script language="JavaScript">
function getId() {
  return "ororeilly,orglobal"
}
function getSerializationID() {
  return "6616550"
}
</script>
<script language="JavaScript" src="/text/omniture/js/s_code.js" type="text/javascript"></script>
<script language="JavaScript" src="/omniture/parseOmnitureJSON.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript"><!--



    var oOmnitureJSON = {"pageName":"oreilly:store:browse subjects data","prop2":"oreilly:store:browse subjects","prop1":"oreilly:store","prop5":"browse subjects data","prop12":"oreilly:store:browse subjects:data:data","prop3":"oreilly:store:browse subjects:data","hier1":"oreilly,store,browse subjects,data","channel":"oreilly"};

    parseOmnitureJSON(oOmnitureJSON);

/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code=s.t();if(s_code)document.write(s_code)//--></script>
<script language="JavaScript" type="text/javascript"><!--
if(navigator.appVersion.indexOf('MSIE')>=0)document.write(unescape('%3C')+'\!-'+'-')
//--></script><noscript><a href="http://www.omniture.com" title="Web Analytics"><img alt="" border="0" height="1" src="http://ororeilly,orglobal.122.2O7.net/b/ss/ororeilly,orglobal/1/H.20.3--NS/0" width="1"/></a></noscript><!--/DO NOT REMOVE/-->
<!-- End SiteCatalyst code version: H.20.3. -->
<!-- End, Omniture Reporting Support -->




      

























  







<!-- Google Analytics Reporting Support -->
<!-- Google Analytics More info available at http://www.google.com/analytics/index.html -->
<script language="JavaScript" src="/googleanalytics/parseGoogleAnalyticsJSON.js" type="text/javascript"></script>
<script type="text/javascript"> 
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-4591498-1']); 
_gaq.push(['_setDomainName', 'oreilly.com']); 
_gaq.push(['_addIgnoredRef', 'oreilly.com']); 
_gaq.push(['_trackPageview']); 

  
    
  
  (function() { 
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
  })(); 

</script> 
<!-- End, Google Analytics Reporting Support -->




 <script type="text/javascript">
var _sf_async_config={uid:1632,domain:"shop.oreilly.com"};
(function(){
  function loadChartbeat() {
    window._sf_endpt=(new Date()).getTime();
    var e = document.createElement('script');
    e.setAttribute('language', 'javascript');
    e.setAttribute('type', 'text/javascript');
    e.setAttribute('src',
       (("https:" == document.location.protocol) ? "https://a248.e.akamai.net/chartbeat.download.akamai.com/102508/" : "http://static.chartbeat.com/") +
       "js/chartbeat.js");
    document.body.appendChild(e);
  }
  var oldonload = window.onload;
  window.onload = (typeof window.onload != 'function') ?
     loadChartbeat : function() { oldonload(); loadChartbeat(); };
})();

</script> 

<!-- crazyegg -->
<script type="text/javascript">
setTimeout(function(){var a=document.createElement("script"); var b=document.getElementsByTagName("script")[0]; a.src=document.location.protocol+"//dnn506yrbagrg.cloudfront.net/pages/scripts/0011/6381.js?"+Math.floor(new Date().getTime()/3600000); a.async=true;a.type="text/javascript";b.parentNode.insertBefore(a,b)}, 1);
</script>







<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"applicationID":"26513819","applicationTime":11182,"beacon":"bam.nr-data.net","queueTime":0,"licenseKey":"85a7277884","transactionName":"b11UZkoDW0ZZVkNeDlYXZUZKF0FGF1ZWQwRfV0RLF0gf","agent":"","errorBeacon":"bam.nr-data.net"}</script>
<script src="/includes/footerScripts.js" type="text/javascript"></script>

  

























  





<!-- MyBuys Page Parameters Place in body element -->


	
		
		
			<script type="text/javascript">
				mybuys.setPageType("CATEGORY");
			</script>
		
	

<!-- End MyBuys Page Parameters -->
 
 
	

























  





<!-- MyBuys Page Parameters Place in body element -->
<script type="text/javascript">
	mybuys.set("categoryid","theory");
</script>
<!-- End MyBuys Page Parameters -->


<!-- MyBuys Page Initialization Place after </body> tag -->
<script type="text/javascript">
  mybuys.initPage();
</script>
<!-- End MyBuys Page Initialization -->
</body></html>

In [17]:
tds = soup("td","thumbtext")
len(tds)


Out[17]:
30

In [18]:
def is_video(td):
    """it's a video if it has exactly one pricelabel, and if
    the stripped text inside that pricelabel starts with 'Video'"""
    pricelabels = td('span', 'pricelabel')
    return (len(pricelabels) == 1 and
            pricelabels[0].text.strip().startswith("Video"))

In [19]:
len([td for td in tds if not is_video(td)])


Out[19]:
19

In [20]:
import re

def book_info(td):
    """given a BeautifulSoup <td> Tag representing a book,
    extract the book's details and return a dict"""

    title = td.find("div", "thumbheader").a.text
    by_author = td.find('div', 'AuthorName').text
    authors = [x.strip() for x in re.sub("^By ", "", by_author).split(",")]
    isbn_link = td.find("div", "thumbheader").a.get("href")
    isbn = re.match("/product/(.*)\.do", isbn_link).groups()[0]
    date = td.find("span", "directorydate").text.strip()

    return {
        "title" : title,
        "authors" : authors,
        "isbn" : isbn,
        "date" : date
    }

In [21]:
([book_info(td) for td in tds if not is_video(td)])


Out[21]:
[{'authors': ['Tom Hope', 'Yehezkel S. Resheff', 'Itay Lieder'],
  'date': 'January 2017',
  'isbn': '0636920063698',
  'title': 'Learning TensorFlow'},
 {'authors': ['Ved Antani', 'Stoyan Stefanov'],
  'date': 'January 2017',
  'isbn': '9781785880568',
  'title': 'Object-Oriented JavaScript, 3rd Edition'},
 {'authors': ['Richard M Reese', 'Jennifer L. Reese'],
  'date': 'January 2017',
  'isbn': '9781785280115',
  'title': 'Java for Data Science'},
 {'authors': ['Suresh K. Gorakala'],
  'date': 'December 2016',
  'isbn': '9781785884856',
  'title': 'Building Recommendation Engines'},
 {'authors': ['Ashish Kumar', 'Avinash Paul'],
  'date': 'December 2016',
  'isbn': '9781783551811',
  'title': 'Mastering Text Mining with R'},
 {'authors': ['Padma Priya Chitturi'],
  'date': 'December 2016',
  'isbn': '9781785880100',
  'title': 'Apache Spark for Data Science Cookbook'},
 {'authors': ['Ted Malaska'],
  'date': 'December 2016',
  'isbn': '0636920053255',
  'title': 'Solutions Architecture'},
 {'authors': ['Raul Estrada'],
  'date': 'December 2016',
  'isbn': '9781786467201',
  'title': 'Fast Data Processing Systems with SMACK Stack'},
 {'authors': ['Benjamin Bengfort', 'Rebecca Bilbro', 'Tony Ojeda'],
  'date': 'December 2016',
  'isbn': '0636920052555',
  'title': 'Applied Text Analysis with Python'},
 {'authors': ['Ahmed Sherif'],
  'date': 'December 2016',
  'isbn': '9781785885433',
  'title': 'Practical Business Intelligence'},
 {'authors': ['Walter R. Paczkowski'],
  'date': 'December 2016',
  'isbn': '9781629604084',
  'title': 'Market Data Analysis Using JMP'},
 {'authors': ['Jessica Roper'],
  'date': 'December 2016',
  'isbn': '0636920055495',
  'title': 'A Guide to Improving Data Integrity and Adoption'},
 {'authors': ['Sinan Ozdemir'],
  'date': 'December 2016',
  'isbn': '9781785887918',
  'title': 'Principles of Data Science'},
 {'authors': ['Behzad Ehsani'],
  'date': 'December 2016',
  'isbn': '9781782172161',
  'title': 'Data Acquisition Using LabVIEW'},
 {'authors': ['Jenny Zhang'],
  'date': 'December 2016',
  'isbn': '9781786460097',
  'title': 'Tableau 10.0 Best Practices'},
 {'authors': ['Ryan  Sleeper'],
  'date': 'December 2016',
  'isbn': '0636920061977',
  'title': 'Practical Tableau'},
 {'authors': ['SAS Institute'],
  'date': 'December 2016',
  'isbn': '9781629609799',
  'title': "What's New in SAS 9.4"},
 {'authors': ['David Baldwin'],
  'date': 'December 2016',
  'isbn': '9781784397692',
  'title': 'Mastering Tableau'},
 {'authors': ['Darren Cook'],
  'date': 'December 2016',
  'isbn': '0636920053170',
  'title': 'Practical Machine Learning with H2O'}]

In [22]:
from time import sleep
from bs4 import BeautifulSoup # 실행전 conda install html5lib
import requests, re

def scrape(num_pages=31):
    base_url = "http://shop.oreilly.com/category/browse-subjects/" + \
           "data.do?sortby=publicationDate&page="

    books = []

    for page_num in range(1, num_pages + 1):
        print("souping page", page_num)
        url = base_url + str(page_num)
        soup = BeautifulSoup(requests.get(url).text, 'html5lib')

        for td in soup('td', 'thumbtext'):
            if not is_video(td):
                books.append(book_info(td))

        # now be a good citizen and respect the robots.txt!
        sleep(30)

    return books

In [ ]:
books = scrape(50)
books


souping page 1
souping page 2
souping page 3
souping page 4
souping page 5
souping page 6
souping page 7
souping page 8
souping page 9
souping page 10
souping page 11
souping page 12
souping page 13
souping page 14
souping page 15
souping page 16
souping page 17
souping page 18
souping page 19
souping page 20
souping page 21
souping page 22
souping page 23
souping page 24
souping page 25
souping page 26
souping page 27
souping page 28
souping page 29
souping page 30
souping page 31
souping page 32
souping page 33
souping page 34
souping page 35
souping page 36
souping page 37
souping page 38
souping page 39
souping page 40
souping page 41
souping page 42

In [24]:
def get_year(book):
    """book["date"] looks like 'November 2014' so we need to
    split on the space and then take the second piece"""
    return int(book["date"].split()[1])

In [25]:
from collections import Counter

def plot_years(plt, books):
    # 2014 is the last complete year of data (when I ran this)
    year_counts = Counter(get_year(book) for book in books
                          if get_year(book) <= 2014)

    years = sorted(year_counts)
    book_counts = [year_counts[year] for year in years]
    plt.bar([x - 0.5 for x in years], book_counts)
    plt.xlabel("year")
    plt.ylabel("# of data books")
    plt.title("Data is Big!")
    plt.show()

In [26]:
import matplotlib.pyplot as plt
%pylab inline

plot_years(plt, books)


Populating the interactive namespace from numpy and matplotlib
/usr/local/lib/python3.5/site-packages/IPython/core/magics/pylab.py:161: UserWarning: pylab import has clobbered these variables: ['f']
`%matplotlib` prevents importing * from pylab and numpy
  "\n`%matplotlib` prevents importing * from pylab and numpy"

In [27]:
import json

print("parsing json")

serialized = """{ "title" : "Data Science Book",
                      "author" : "Joel Grus",
                      "publicationYear" : 2014,
                      "topics" : [ "data", "science", "data science"] }"""

    # parse the JSON to create a Python object
deserialized = json.loads(serialized)
if "data science" in deserialized["topics"]:
    print(deserialized)


parsing json
{'author': 'Joel Grus', 'title': 'Data Science Book', 'topics': ['data', 'science', 'data science'], 'publicationYear': 2014}

In [28]:
from dateutil.parser import parse

print("GitHub API")
endpoint = "https://api.github.com/users/joelgrus/repos"
# endpoint = "https://api.github.com/users/Insight-book/repos"
#endpoint 의 자신의 github 주소를 넣어볼 것을 권장함

repos = json.loads(requests.get(endpoint).text)

dates = [parse(repo["created_at"]) for repo in repos]
month_counts = Counter(date.month for date in dates)
weekday_counts = Counter(date.weekday() for date in dates)

print("dates", dates)
print("month_counts", month_counts)
print("weekday_count", weekday_counts)

last_5_repositories = sorted(repos,
                                 key=lambda r: r["created_at"],
                                 reverse=True)[:5]

print("last five languages", [repo["language"] for repo in last_5_repositories])


GitHub API
dates [datetime.datetime(2013, 7, 5, 2, 2, 28, tzinfo=tzutc()), datetime.datetime(2013, 11, 15, 5, 33, 22, tzinfo=tzutc()), datetime.datetime(2012, 9, 18, 4, 20, 23, tzinfo=tzutc()), datetime.datetime(2016, 7, 19, 17, 34, 31, tzinfo=tzutc()), datetime.datetime(2015, 11, 11, 14, 15, 36, tzinfo=tzutc()), datetime.datetime(2016, 5, 31, 14, 33, 6, tzinfo=tzutc()), datetime.datetime(2015, 6, 30, 0, 33, 3, tzinfo=tzutc()), datetime.datetime(2013, 8, 21, 13, 26, 5, tzinfo=tzutc()), datetime.datetime(2013, 8, 18, 5, 3, 41, tzinfo=tzutc()), datetime.datetime(2015, 7, 30, 1, 54, 55, tzinfo=tzutc()), datetime.datetime(2014, 11, 9, 2, 31, 24, tzinfo=tzutc()), datetime.datetime(2013, 11, 10, 6, 52, 56, tzinfo=tzutc()), datetime.datetime(2015, 4, 8, 1, 1, 47, tzinfo=tzutc()), datetime.datetime(2016, 1, 8, 3, 33, 58, tzinfo=tzutc()), datetime.datetime(2016, 1, 21, 6, 46, 49, tzinfo=tzutc()), datetime.datetime(2013, 7, 1, 3, 36, 23, tzinfo=tzutc()), datetime.datetime(2013, 2, 22, 0, 12, 38, tzinfo=tzutc()), datetime.datetime(2016, 5, 21, 23, 57, 23, tzinfo=tzutc()), datetime.datetime(2015, 7, 2, 21, 47, 55, tzinfo=tzutc()), datetime.datetime(2016, 10, 23, 21, 28, 37, tzinfo=tzutc()), datetime.datetime(2012, 2, 15, 4, 55, 49, tzinfo=tzutc()), datetime.datetime(2016, 7, 11, 15, 48, 39, tzinfo=tzutc()), datetime.datetime(2016, 1, 20, 15, 28, 1, tzinfo=tzutc()), datetime.datetime(2013, 7, 4, 17, 28, 29, tzinfo=tzutc()), datetime.datetime(2013, 12, 8, 17, 53, 7, tzinfo=tzutc()), datetime.datetime(2015, 12, 28, 16, 54, 15, tzinfo=tzutc()), datetime.datetime(2015, 6, 23, 0, 27, 55, tzinfo=tzutc()), datetime.datetime(2015, 5, 23, 15, 50, 14, tzinfo=tzutc()), datetime.datetime(2013, 5, 21, 2, 51, 36, tzinfo=tzutc()), datetime.datetime(2015, 7, 18, 1, 1, 20, tzinfo=tzutc())]
month_counts Counter({7: 8, 5: 4, 11: 4, 1: 3, 2: 2, 6: 2, 8: 2, 12: 2, 4: 1, 9: 1, 10: 1})
weekday_count Counter({1: 6, 2: 5, 6: 5, 3: 4, 4: 4, 0: 3, 5: 3})
last five languages ['HTML', 'Python', 'Jupyter Notebook', 'Python', 'Python']

In [21]:
import requests
from twython import Twython
#pip install twython

# fill these in if you want to use the code

import configparser

config = configparser.ConfigParser()
config.read('twitter_app.conf')

CONSUMER_KEY = config.get("TWITTER_KEY", "CONSUMER_KEY")
CONSUMER_SECRET = config.get("TWITTER_KEY", "CONSUMER_SECRET")
ACCESS_TOKEN = config.get("TWITTER_KEY", "ACCESS_TOKEN")
ACCESS_TOKEN_SECRET = config.get("TWITTER_KEY", "ACCESS_TOKEN_SECRET")

config.sections()


Out[21]:
['TWITTER_KEY']

In [22]:
from twython import TwythonStreamer

tweets = []

class MyStreamer(TwythonStreamer):
    """our own subclass of TwythonStreamer that specifies
    how to interact with the stream"""

    def on_success(self, data):
        """what do we do when twitter sends us data?
        here data will be a Python object representing a tweet"""

        # only want to collect English-language tweets
        if data['lang'] == 'en':
            tweets.append(data)

        # stop when we've collected enough
        if len(tweets) >= 1000:
            self.disconnect()

    def on_error(self, status_code, data):
        print(status_code, data)
        self.disconnect()

def call_twitter_search_api():
    twitter = Twython(CONSUMER_KEY, CONSUMER_SECRET)
    # search for tweets containing the phrase "data science"
    for status in twitter.search(q='"data science"')["statuses"]:
        user = status["user"]["screen_name"].encode('utf-8')
        text = status["text"].encode('utf-8')
        print(user, ":", text)
        print()
        
def call_twitter_streaming_api():
    stream = MyStreamer(CONSUMER_KEY, CONSUMER_SECRET,
                        ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

    # starts consuming public statuses that contain the keyword 'data'
    stream.statuses.filter(track='data')

call_twitter_search_api()


b'reclaimifytest' : b'Reclaiming the term \xe2\x80\x9cdata science\xe2\x80\x9d https://t.co/etXTCJtHIF'

b'G0GMANGO' : b'100 free ebooks for signing up 4 #DataScience  newsletters  \nhttps://t.co/ozAphjYi4e'

b'newsycbot' : b'Reclaiming the term \xe2\x80\x9cdata science\xe2\x80\x9d https://t.co/pRBfnZk3nv (cmts https://t.co/yT6W8FAlDa)'

b'ekito' : b"RT @tlse_dasci: et n'oubliez pas, ce soir 3eme rencontre #Kaggle chez @ekito https://t.co/G6Wzh7eJzt https://t.co/lLgzySuzbS"

b'SecNewsBot' : b'Hacker News - Reclaiming the term \xe2\x80\x9cdata science\xe2\x80\x9d https://t.co/FJaC77Swcd'

b'davidpiprof' : b'I got unexpected call from headhunter that I am going to second round to this data science position. With interview next week #p #xfb'

b'my_data_science' : b'Predicting purchases at retail stores using HPE Vertica and Dataiku DSS https://t.co/DtpjSZDE7x #datascience'

b'cremeglobal' : b'Hi all,\n\nThis is our new data science platform which is coming out of beta. We are installing a large amount of food\xe2\x80\xa6https://t.co/B64Go1Mt0h'

b'RobkNews' : b'Submit Abstract: Cell Symposia: Technology. Biology. Data Science. https://t.co/nwprDJ8gsM https://t.co/sGbywnfxww'

b'hacker_news_hir' : b'Reclaiming the term \xe2\x80\x9cdata science\xe2\x80\x9d : https://t.co/wz7y5vapoF Comments: https://t.co/7LUnft9hJs'

b'Renaino' : b'RT @alybrarian: Our data guides @JBClibrary: For Data Science https://t.co/39dakFeBEO  &amp; Data Management https://t.co/oV545Szy3f @Renaino #\xe2\x80\xa6'

b'SarahAspire' : b'Why Data Science? https://t.co/Gf8j9bmbxG #Data #Science #Aspire #Recruitment https://t.co/2o02gZLdB1'