Pandas数据分析常用方法

Pandas数据分析常用方法

1、读取数据pd.read()

  1. 指定索引列
  • eg1:

    # index:指定索引,columns:指定列名
    pd.DataFrame(np.arange(12,24).reshape(3,4),index=['a','b','c'],columns=['w','x','y','z'])
    

在这里插入图片描述

  • eg2:

    catering_sale = "catering_sale.xls"
    # 读取数据,指定"日期"列为索引列(DataFrame所有的Series共用一个列索引)
    data = pd.read_excel(catering_sale, index_col='日期')
    

在这里插入图片描述

  1. names : 列名数组,缺省值 None,用于读取数据的指定列名

    eg1:

    catering_sale = "catering_sale.xls"
    

data = pd.read_excel(catering_sale, names=[‘date’,‘sale’])


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMTqDTNL-1593225260019)(D:\我\MyBlog\Pandas数据分析常用方法.assets\image-20200624181257685.png)]



## 2、 按行索引iloc与loc

```python
data2=pd.DataFrame(data1,columns=('a','b','c')) #columns定义字段
data2

 a	b	c
0	0	2	4
1	6	8	10
2	12	14	16
3	18	20	22
4	24	26	28

2.1 iloc

  • 取指定单行多列

    data2.iloc[2] 
    a    12
    b    14
    c    16
    Name: 2, dtype: int32
    
  • iloc[start:end],索引[开始:结束],左闭右开

    data2.iloc[1:4] 
    	a	b	c
    1	6	8	10
    2	12	14	16
    3	18	20	22
    
  • 指定行,列取到一个数字

    data2.iloc[2,2]  #[行,列]
    16
    
  • 不能直接取字段,报取值错误

    data2.iloc[2,'c']  #[行,列]
    #ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types
    
  • 可以用切片来取指定行列

    data2.iloc[2:3,0:]
    a	b	c
    2	12	14	16
    

2.2 loc

  • 取第指定单行行,多列,与iloc一样

    data2.loc[2]
    a    12
    b    14
    c    16
    Name: 2, dtype: int32
    
  • loc[start:end],索引[开始:结束],左闭右闭–>与iloc不同

    data2.loc[1:4]  
    	a	b	c
    1	6	8	10
    2	12	14	16
    3	18	20	22
    4	24	26	28
    
  • 不能像iloc一样直接取指定行,报类型错误

     data2.loc[2,3]  ##[行,列] 报错
    #TypeError: cannot do label indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [2] of <class 'int'>
    
    
  • 可以去特定行和列,得到指定得一个数字

    data2.loc[2,'c']
    16
    
  • 取指定data3指定行,指定列,有字段

    data3=data2.loc[1:4]
    data4=data3[['a','b']]
    print(data4)
    print(type(data4))  #类型DataFrame
        a   b
    1   6   8
    2  12  14
    3  18  20
    4  24  26
    <class 'pandas.core.frame.DataFrame'>
    
  • 取data3指定行单列,有字段,类型DataFrame

    data5=data3[['a']]
    print(data5)
    print(type(data5))  
        a
    1   6
    2  12
    3  18
    4  24
    
    <class 'pandas.core.frame.DataFrame'>
    
  • 取data3指定行单列,没有字段,类型Series

    data6=data3['a']
    print(data6)
    print(type(data6)) 
    1     6
    2    12
    3    18
    4    24
    Name: a, dtype: int32
    <class 'pandas.core.series.Series'>
    
    

2.3 总结

1.loc

通过行标签索引行数据
例:loc[n]表示索引的是第n行(index 是整数)
loc[‘d’]表示索引的是第’d’行(index 是字符)
有行索引可以没有字段取值,但有字段取值前必须得有行索引,
而且行索引只能为标签索引形式来取,不能按切片形式来取。
单取切片形式可以,只是索引为左闭右闭。

2.iloc

通过行索引获取行数据,不能是字符,取索引必须按切片形式来取,不能按标签,这是与loc的不同。索引为左闭右开。iloc也可以取指定行列,只不过得按切片形式索引,不能直接拿标签索引来做。

3.建议

当用行索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc 。

3、 Matplotlib绘图

1. plot折线图

plt.plot(x,y,S)
  • 绘制y对于x的折线图

  • 字符串参量S指定绘制时图形的类型、样式和颜色

    • 常用:“b”为蓝色,“r”为红色,"o"为圆圈,”-“为实线,”–“为虚线

    eg1:

    import matplotlib.pyplot as plt
    x = np.linspace(0,2*np.pi,50)
    y = np.sin(x)
    plt.plot(x,y,"b--")
    

    在这里插入图片描述

2. pie饼状图

plt.pie(size)
  • size是一个列表,记录各个扇形的面积比列,pie有丰富的参数

    eg1:

    labels = ['Frogs', 'Hogs', 'Dogs', 'Logs'] # 定义标签
    sizes = [15, 30, 45, 10] # 每一块的比例
    colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] # 每一块的颜色
    explode = [0, 0.1, 0, 0] # 突出显示,这里仅仅突出显示第二块
    
    plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90)
    plt.axis('equal') # 显示为圆(避免比例压缩为椭圆)
    plt.show()
    

    在这里插入图片描述

3.hist条形图

plt.hist(x,y)
  • x 是待绘制直方图的一维数组

  • y是正数,表示均匀分布为y组,也可以是列表,列表各个数字为分组的边界点(即手动指定分界点)。

    eg1:

    x = np.random.randn(1000) # 1000个服从正态分布的随机数
    plt.hist(x,10)
    plt.show()
    

在这里插入图片描述

4.boxplot箱线图

D.boxplot()
D.plot(kind='box')
  • 一种方法是直接调用DataFrame的boxplot()方法;

  • 另一种是调用Series或者DataFrame的plot()方法,并用kind参数指定箱型图(box);

    eg1:

    x = np.random.randn(1000) # 1000个服从正态分布的随机数
    D = pd.DataFrame([x,x+1]).T # 构造两列的DataFrame
    D.plot(kind='box') # 调用Series内置的绘图方法,用kind参数指定箱型图(box)
    plt.show()
    

一种方法是直接调用DataFrame的boxplot()方法;

  • 另一种是调用Series或者DataFrame的plot()方法,并用kind参数指定箱型图(box);

    eg1:

    x = np.random.randn(1000) # 1000个服从正态分布的随机数
    D = pd.DataFrame([x,x+1]).T # 构造两列的DataFrame
    D.plot(kind='box') # 调用Series内置的绘图方法,用kind参数指定箱型图(box)
    plt.show()
    

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值