python-简单运用数据分析包(numpy、pandas、matplotlib)

一、numpy、

1、下载pip install numpy

  导入import numpy as np  -----np是约定俗称的

2、ndarray-多维数组对象

  1)创建:np.array()

  2)多维数组列表

    数组对象内的元素类型必须相同,切大小不可修改

  3)属性

属性 描述
T 数组的转置
dtype 数组元素的数据类型
size 数组元素个数
nadim 数组的维数
shape 数组的维度大小(以元组的形式)

  4)数据类型

    bool_

    int_

    uint8  : 无符号整型  即不能用来存负数

    float_

    complex

    astype()  方法可以用来修改数据类型

 

  5)nadarry创建

方法 描述
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dtype创建空数组(随机值)
eye() 根据指定边长和dtype创建单位矩阵

 

  6)切片、索引和布尔型索引

3、函数

  3.0常用函数  

    abs(计算绝对值),fads(复数)

          sqrt(平方根),square(平方的),exp(指数函数),

  3.1数学统计方法

函数 功能
sum 求和
cumsum 求前缀和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引

  3.2随机数

函数 功能
rand 随机数组(0~1之间的数)
randint 随机整数
chocie 随机选择
shuffle 随机排序
uniform 随机数组

二、pandas

import pandas as pd

  1)Series

    -创建:

第一种:
pd.Series([4,5,6,7,8])
执行结果:
0    4
1    5
2    6
3    7
4    8
dtype: int64
# 将数组索引以及数组的值打印出来,索引在左,值在右,由于没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引,取值的时候可以通过索引取值,跟之前学过的数组和列表一样
-----------------------------------------------
第二种:
pd.Series([4,5,6,7,8],index=['a','b','c','d','e'])
执行结果:
a    4
b    5
c    6
d    7
e    8
dtype: int64
# 自定义索引,index是一个索引列表,里面包含的是字符串,依然可以通过默认索引取值。
-----------------------------------------------
第三种:
pd.Series({"a":1,"b":2})
执行结果:
a    1
b    2
dtype: int64
# 指定索引
-----------------------------------------------
第四种:
pd.Series(0,index=['a','b','c'])
执行结果:
a    0
b    0
c    0
dtype: int64
# 创建一个值都是0的数组
View Code

    -缺失数据方法

      dropna() # 过滤掉值为NaN的行

      fill() # 填充缺失数据

      isnull() # 返回布尔数组,缺失值对应为True

      notnull() # 返回布尔数组,缺失值对应为False

1、
obj1.isnull()  # 是缺失值返回Ture
运行结果:
rocky     True
cloud    False
sean     False
yang     False
dtype: bool

2、
obj1.notnull()  # 不是缺失值返回Ture
运行结果:
rocky    False
cloud     True
sean      True
yang      True
dtype: bool

3、过滤缺失值 # 布尔型索引
obj1[obj1.notnull()]
运行结果:
cloud    21.0
yang     19.0
sean     18.0
dtype: float64
View Code

    -loc属性  # 以标签解释  (索引为具体标签)

     iloc属性 # 以下表解释  (索引为行列数字)

  2)DataFrame

    DataFrame是一个表格型的数据结构,相当于是一个二维数组,含有一组有序的列。他可以被看做是由Series组成的字典,并且共用一个索引

    -创建:

第一种:
pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]})
# 产生的DataFrame会自动为Series分配所索引,并且列会按照排序的顺序排列
运行结果:
    one two
0   1   4
1   2   3
2   3   2
3   4   1

> 指定列
可以通过columns参数指定顺序排列
data = pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]})
pd.DataFrame(data,columns=['one','two'])

# 打印结果会按照columns参数指定顺序


第二种:
pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3],index=['b','a','c'])})
运行结果:
   one  two
a   1   2
b   2   1
c   3   3
View Code

    -查看属性和方法

      index获取行索引

      columns获取列索引

      T转置

      values获取值索引

      describe 获取快速统计

one    two
a   1   2
b   2   1
c   3   3
# 这样一个数组df
-----------------------------------------------------------------------------
df.index
运行结果:
Index(['a', 'b', 'c'], dtype='object')
----------------------------------------------------------------------------
df.columns
运行结果:
Index(['one', 'two'], dtype='object')
--------------------------------------------------------------------------
df.T
运行结果:
    a   b   c
one 1   2   3
two 2   1   3
-------------------------------------------------------------------------
df.values
运行结果:
array([[1, 2],
       [2, 1],
       [3, 3]], dtype=int64)
------------------------------------------------------------------------
df.describe()
运行结果:
one two
count   3.0 3.0
mean    2.0 2.0
std 1.0 1.0
min 1.0 1.0
25% 1.5 1.5
50% 2.0 2.0
75% 2.5 2.5
max 3.0 3.0
View Code

    -可以通过loc和iloc两种方法进行索引和切片

  3、时间对象处理(baidu)

  4、数据分组和聚合

    分组(groupby)

df = pd.DataFrame({'key1':['x','x','y','y','x',                               
            'key2':['one','two','one',',two','one'],
            'data1':np.random.randn(5),
            'data2':np.random.randn(5)})
df
运行结果:
    key1    key2    data1   data2
0   x   one 0.951762    1.632336
1   x   two -0.369843   0.602261
2   y   one 1.512005    1.331759
3   y   ,two    1.383214    1.025692
4   x   one -0.475737   -1.182826


# 调用
f1 = df['data1'].groupby(df['key1'])
f1
运行结果:
<pandas.core.groupby.groupby.SeriesGroupBy object at 0x00000275906596D8>

# 求平均值
f1.mean()  # 调用mean函数求出平均值
运行结果:
key1
x    0.106183
y    2.895220
Name: data1, dtype: float64
View Code

  5、其他

    读取文件:pd.read_csv('./a.csv')

    另存:df.tocsv('./a.csv',index=False)   # index判断是否添加索引

    mean(axis=0,skipna=False)

    sum(axis=1)

    sort_index(axis, …, ascending) # 按行或列索引排序

    sort_values(by, axis, ascending) # 按值排序

    apply(func, axis=0) # 将自定义函数应用在各行或者各列上,func可返回标量或者Series

    applymap(func) # 将函数应用在DataFrame各个元素上

    map(func) # 将函数应用在Series各个元素上

三、matplotlib (绘图和可视化)

Matplotlib是一个强大的Python绘图和数据可视化的工具包。

pip install matplotlib

import matplotlib.pyplot as plt

# 防止乱码问题,只对windows游泳
plt.rcParams['font.sans-serif'] = ['SimHei']

1、绘制线形图(plot)

  1)代码

x = [1,2,3,6]
y = [2,4,9,7]

plt.figure(figsize=(10,6)) # 图大小

plt.title('标题', fontsize=20, color='red')
plt.xlabel('x轴', fontsize=15)
plt.ylabel('y轴', fontsize=15)


# plt.plot(x,y, color='green', marker='v', linestyle='--')  
plt.plot(x, y, 'go--')  # g:green, o:焦点, --:连线用虚线

plt.show() # 展示图命令

  2)图例

 

 

2、绘制柱状图 (bar)

  1)数据获取

 

 

   2)代码

x = movies.index
y = movies.values

plt.figure(figsize=(15,6))

plt.title('每个国家或者地区的电影数量')
plt.xlabel('国家或地区', fontsize=20)
plt.ylabel('电影数量', fontsize=20)
plt.xticks(rotation=90, fontsize=15)

plt.bar(x, y, color='green')  # 柱状图
# plt.text?
for a,b in zip(x,y):  # 每隔10个显示 zip(x[::10],y[::10])
    plt.text(a, b+100, b, ha='center')  # 四个参数分别对应:x轴,y轴 ,柱顶的值,中心分部

plt.show()

  3)图例

 

 

 

3、绘制饼图 (pie)

  1)、数据准备

  

  2)代码:

### df_res 是待分割的源数据  [0,60,90,120, 140, 1000] 是区间 左开右闭
res = pd.cut(df_res, [0,60,90,120, 140, 1000]) 
res = res.value_counts()  # 求分割后各组值


x = res.index
y = res.values
plt.title('电影时长分布饼图', fontsize=20)

patch, l_text, p_text = plt.pie(y, labels = x, autopct='%.2f%%') # autopct 内部百分比

for p in p_text: # 圈内属性
    p.set_size(15)
    p.set_color('white')

for l in l_text:  # 外圈属性
    l.set_size(13)
    l.set_color('r')
    
plt.show()

  3)图例:

 

 

 

 4、直方图(hist)

 

posted @ 2019-12-04 17:31  小王八+1  阅读(898)  评论(0编辑  收藏  举报