python jupyter 数据分析使用

2018年01月16日

文档

jupyter官网:http://jupyter.org/ 推荐用 anaconda 来使用jupyter,相关的依赖包啥的都自动搞好了,不用自己搞环境,传送门

例子

以下例子使用 python2.7的语法编写

需要的相关模块引入

  import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt

图像中文展示

前提是需要安装 SimHei 字体 查看 matplotlib 所在目录:print(matplotlib.matplotlib_fname())

  plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
  plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
  plt.axis('equal') # 设置圆的长宽相等,则图形展示为圆,而非椭圆

数据加载

  // 数据载入,列之间使用 \t 分割
  all_user_df = pd.read_csv("/Users/jaky.wang/tmp/data.csv", sep='\t')

  // 查看前几行数据
  all_user_df.head()

  // 过滤出 age=10的数据
  filter_data = all_user_df[all_user_df.age<20]

  // 多个条件过滤,过滤出age大于5小于20的数据
  filter_data = all_user_df[(all_user_df.age<20) & (all_user_df.age>5)]

  // 提取指定行的指定列,第一个参数为从第几行到第几行,第二个参数为指定列名的集合
  extract_data = all_user_df.loc[:,['user_name','age']]

  // 两个数据集merge成一个数据集,类似于sql的join
  merge_data = pd.merge(all_user_df, all_user_df, how="inner", on='userid')

  // 使用 行名 作为 merge条件,并添加字段后缀
  pd.merge(all_user_df, all_user_df, how='inner',
          left_index=True, right_index=True, suffixes=('_one', '_two'))

  // 使用数据集中的一行,算出一个新列,axis=1表示变量 x 是以行的维度处理,默认是列
  all_user_df['new_column'] = all_user_df.apply(lambda x:x.age*2, axis=1)

  // 以age进行分组,统计出现的次数
  name_count = all_user_df.groupby(all_user_df.age).count().user_name

  // 饼图展示数据,
  all_user_df.plot(kind='pie', subplots=True,autopct='%.2f',figsize=(15.0, 8.0))
  plt.show()

  // 排序,逆序
  sort_df = all_user_df.sort_values('userid', ascending=False)

  // 保存到文件
  all_user_df.to_csv("/Users/jaky.wang/data.csv")

多个array在同一图上做曲线图

common_all_consumed 和 all_consumed 都是普通的 list

  #创建figure窗口
  plt.figure(num=3, figsize=(15, 8))

  plt.plot(x_axix, np.array(common_all_consumed), color='red')
  plt.plot(x_axix, np.array(all_consumed), color='black')

  #设置坐标轴范围
  plt.xlim((0, 23))
  plt.ylim((0, 1500000000))
  #设置坐标轴名称
  plt.xlabel('time')
  plt.ylabel('consumed')
  #设置坐标轴刻度
  my_x_ticks = np.arange(0, 24, 1)
  my_y_ticks = np.arange(0, 1500000000, 50000000)
  plt.xticks(my_x_ticks)
  plt.yticks(my_y_ticks)

  #显示出所有设置
  plt.show()