用Python玩转数据——week4

便捷数据获取

  • csv文件,json格式文件导入

    1
    2
    3
    4
    # Filename: quotes_fromcsv.py
    import pandas as pd
    quotesdf = pd.read_csv('axp.csv')
    print(quotesdf)
  • web API获取数据

    获取的已经是数据部分 而不是HTML文件,不需要再进行解析

    1
    2
    >>> r = requests.get('https://api.douban.com/v2/book/1084336') 
    >>> r.text '{"rating":{"max":10,"numRaters":218148,"average":"9.0","min":0 },"subtitle":"","author":["[法] 圣埃克苏佩里"],"pubdate":"2003- 8","tags":[{"count":52078,"name":"小王子","title":"小王子 "},{"count":43966,"name":"童话", ... , "price":"22.00"}'
  • NLTK语料库

数据准备

数据形式

  • 修改索引
    • 行索引: index
    • 列索引: columns
1
2
3
4
5
6
7
8
9
10
11
import requests 
import re
import pandas as pd
def retrieve_dji_list():
...
return dji_list
dji_list = retrieve_dji_list()
djidf = pd.DataFrame(dji_list)
cols = ['code', 'name', 'lasttrade']
djidf.columns = cols print(quotesdf)
djidf.index = range(1, len(djidf) + 1)
  • 时间数据格式化
    • 转换成常规时间
    • 转换成固定格式
    • 创建时间序列
1
2
3
4
5
6
7
8
9
10
11
转换成常规时间
>>> from datetime import date
>>> firstday = date.fromtimestamp(1464010200)
>>> firstday
datetime.date(2016, 5, 23)

转换成固定格式
y = date.strftime(x,'%Y-%m-%d')

创建时间序列
dates = pd.date_range('20170520', periods=7)

数据显示

显示属性

  • 显示行索引
  • 显示列索引
  • 显示数据的值
  • 显示数据描述

显示方式

  • 显示行
    • 专用方式
      • head
      • tail
    • 切片
  • 显示列

数据选择

选择方式

  • 选择行
    • 切片
    • 索引
1
2
索引
quotesdf['2017-05-01':'2017-05-05']
  • 选择列
    • obj[‘attr’]
    • obj.attr
  • 选择区域
    • 标签label(loc)
1
djidf.loc[1:5, ['code','lasttrade']]
  • 筛选(条件选择)
1
quotesdf[(quotesdf.index >= '2017-01-01') & (quotesdf.index <= '2017- 03-31') & (quotesdf.close >= 80)]

统计与处理

  • diff()
  • 排序

    1
    tempdf = djidf.sort_values(by = 'lasttrade', ascending = False)
  • 计数统计

    1
    tempdf['month'].value_counts()