一文轻松掌握Pandas基础用法:Series, DataFrame, date_range, read_csv

Pandas是什么?

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘数据分析,同时也提供数据清洗功能。

  • 导入
import pandas as pd

Pandas排序方式

  • 根据索引排序sort_index()
  • 根据实际值排序sort_values()排序
  • 默认升序,参数ascending=False时为降序

一维数据:Series

它是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。

>>> import pandas as pd
>>> import numpy as np
>>> b = pd.Series(np.arange(5))
>>> b
0    0
1    1
2    2
3    3
4    4
dtype: int32
>>> s = pd.Series(np.arange(5),index=['a','b','c','d','e'])
>>> print(s)
a    0
b    1
c    2
d    3
e    4
dtype: int32
  • 通过字典创建Series对象
>>> dict={'apple':45,'orange':23,'peach':12}
>>> s =Series(dict)
>>> s = pd.Series(dict)
>>> s
apple     45
orange    23
peach     12
dtype: int64
  • 取值
>>> a = pd.Series([1,2,3])
>>> a.values
array([1, 2, 3], dtype=int64)
>>> print(a.values)
[1 2 3]
  • 根据索引取值
>>> a[2]
3
排序
  • 根据索引进行排序(升序)
>>> s = pd.Series([56,34,45,67,12,67,84],index = list('gbcadfe'))
>>> s.sort_index()
a    67
b    34
c    45
d    12
e    84
f    67
g    56
dtype: int64
  • 根据值进行排序(升序)
>>> s.sort_values()
d    12
b    34
c    45
g    56
a    67
f    67
e    84
dtype: int64

二维数据:DataFrame

DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。

  • 创建
import pandas as pd

a = [[1,2,3],
	[4,5,6],
	[7,8,9]]
df = pd.DataFrame(a,index=list('123'),columns = ['A', 'B', 'C'])
print(df)

​ 运行结果

   A  B  C
1  1  2  3
2  4  5  6
3  7  8  9
将numpy数据转成DataFrame格式的数据
>>> import pandas as pd
>>> import numpy as np
>>> c = np.arange(20,32).reshape(3,4)
>>> c
array([[20, 21, 22, 23],
       [24, 25, 26, 27],
       [28, 29, 30, 31]])
>>> c = pd.DataFrame(c)
>>> c
    0   1   2   3
0  20  21  22  23
1  24  25  26  27
2  28  29  30  31
>>> c = pd.DataFrame(c,index=list('abc'),columns=list('ABCD'))
>>> c
    A   B   C   D
a NaN NaN NaN NaN
b NaN NaN NaN NaN
c NaN NaN NaN NaN
>>> d = np.arange(20,32).reshape(3,4)
>>> c = pd.DataFrame(d,index=list('abc'),columns=list('ABCD'))
>>> c
    A   B   C   D
a  20  21  22  23
b  24  25  26  27
c  28  29  30  31
将DataFrame转换为NumPy
>>> a = [[4,6,1],[3,5,2],[9,5,7]]
>>> df = pd.DataFrame(a,index=list('cbd'),columns=list('ahg'))
>>> df.values
array([[4, 6, 1],
       [3, 5, 2],
       [9, 5, 7]], dtype=int64)
将Series数据转成DataFrame格式的数据
>>> import pandas as pd
>>> import numpy as np
>>> s = pd.Series(np.arange(5),index = list('abcde'))
>>> s
a    0
b    1
c    2
d    3
e    4
dtype: int32
>>> s = pd.DataFrame(s)
>>> s
   0
a  0
b  1
c  2
d  3
e  4   
数组对DataFrame进行排序
  • 根据索引排序
>>> a = [[4,6,1],[3,5,2],[9,5,7]]
>>> df = pd.DataFrame(a,index=list('cbd'),columns=list('ahg'))
>>> df.sort_index() # 根据行索引排列
   a  h  g
b  3  5  2
c  4  6  1
d  9  5  7
>>> df.sort_index(ascending=False) # 根据行索引降序排列
   a  h  g
d  9  5  7
c  4  6  1
b  3  5  2
>>> df.sort_index(axis=1) # 根据列索引排列
   a  g  h
c  4  1  6
b  3  2  5
d  9  7  5
>>> df.sort_index(axis=1,ascending=False) # 根据列索引排列
   h  g  a
c  6  1  4
b  5  2  3
d  5  7  9
  • 根据实际值排序

    通过by参数指定需要排序的列值,可指定多列

    >>> df.sort_values(by='h') # 根据h列的值升序排列
       a  h  g
    b  3  5  2
    d  9  5  7
    c  4  6  1
    >>> df.sort_values(by='h',ascending=False)# 根据h列的值降序排列
       a  h  g
    c  4  6  1
    b  3  5  2
    d  9  5  7
    >>> df.sort_values(by=['h','g'],ascending=False)# 优先考虑排在前面的列
       a  h  g
    c  4  6  1
    d  9  5  7
    b  3  5  2
    

时间索引:date_range

  • 该函数主要用于生成一个固定频率的时间索引,在调用构造方法时,必须指定start、end、periods中的两个参数值,否则报错。

    pandas.date_range(start=None, end=None, periods=None, freq='D', tz=None, normalize=False, name=None, closed=None, **kwargs)
    

    主要参数说明:

    periods:固定时期,取值为整数或None
    freq:日期偏移量,取值为string或DateOffset,默认为’D’
    normalize:若参数为True表示将start、end参数值正则化到午夜时间戳
    name:生成时间索引对象的名称,取值为string或None
    closed:可以理解成在closed=None情况下返回的结果中,若closed=‘left’表示在返回的结果基础上,再取左开右闭的结果,若closed='right’表示在返回的结果基础上,再取做闭右开的结果

    参考文章

  • 示例

import pandas as pd
index = pd.date_range('1/5/2020',periods=8)
print(index)

​ 运行结果

DatetimeIndex(['2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08',
               '2020-01-09', '2020-01-10', '2020-01-11', '2020-01-12'],
              dtype='datetime64[ns]', freq='D')

pandas实现csv文件的读写

csv文件是一个文本文件,其中,列中的值由逗号分隔

将数据写入csv文件

利用pandas包将数据写入DataFrame,再将DataFrame存储为csv文件

import pandas as pd

# 多组列表
no = [1, 2, 3, 4, 5, 6, 7]
square_feet = [150, 200, 250, 300, 350, 400, 400]
price = [6450, 7450, 8450, 9450, 11450, 15450, 18450]

# 字典中的key值即为csv中的列名
data = pd.DataFrame({'No': no, 'square_feet': square_feet, 'price': price})

# 将DataFrame存储为csv, index 表示是否显示行名, default = True
data.to_csv("data/房价.csv", index=False, sep=',')

得到的房价.csv

No,square_feet,price
1,150,6450
2,200,7450
3,250,8450
4,300,9450
5,350,11450
6,400,15450
7,400,18450
从csv文件中读取数据

pandas库提供read_csv

import pandas as pd
data = pd.read_csv('data/房价.csv')
print(data)

输出结果

   No  square_feet  price
0   1          150   6450
1   2          200   7450
2   3          250   8450
3   4          300   9450
4   5          350  11450
5   6          400  15450
6   7          400  18450
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值