首页 > 其他 > 详细

pandas使用

时间:2019-09-18 12:17:02      阅读:102      评论:0      收藏:0      [点我收藏+]

pandas简介

1、pandas是一个强大的Python数据分析的工具包。
2、pandas是基于NumPy构建的。

3、pandas的主要功能

  • 具备对其功能的数据结构DataFrame、Series
  • 集成时间序列功能
  • 提供丰富的数学运算和操作
  • 灵活处理缺失数据

4、安装方法:pip install pandas
5、引用方法:import pandas as pd

Pandas之Series

series是一种一维数据结构,每一个元素都带有一个索引,与一维数组的含义相似,其中索引可以为数字或字符串。

创建

import pandas as pd
import numpy as np

pd.Series([1, 2, 3, 4])
pd.Series([1, 2, 3, 4], index=[a, b, c, d])
pd.Series({a: 1, b: 2})
pd.Series(np.arange(5))

技术分享图片

 

 

技术分享图片

 

Series常用特性

In [8]: sr = pd.Series([1, 2, 3, 4])

In [9]: sr*2
Out[9]:
0    2
1    4
2    6
3    8
dtype: int64

In [10]: sr[sr>1] #布尔运算
Out[10]:
1    2
2    3
3    4
dtype: int64

In [11]: 3 in sr
Out[11]: True

In [12]: sr.sum() #求和
Out[12]: 10

In [13]: sr.mean() #求平均数
Out[13]: 2.5

In [14]: sr.index
Out[14]: RangeIndex(start=0, stop=4, step=1)

In [15]: sr.index=[a,b,c,d]

In [16]: sr
Out[16]:
a    1
b    2
c    3
d    4
dtype: int64

In [17]: sr.index #索引
Out[17]: Index([a, b, c, d], dtype=object)

In [18]: sr.values #值
Out[18]: array([1, 2, 3, 4], dtype=int64)

In [19]: sr.head() #前5列
Out[19]:
a    1
b    2
c    3
d    4
dtype: int64

 标签索引

loc——通过行标签索引行数据 
iloc——通过行号索引行数据 
ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合) 

In [20]: sr = pd.Series({a: 1, b: 2})

In [21]: sr.loc[a]
Out[21]: 1

In [22]: sr.iloc[1]
Out[22]: 2

In [23]: sr.ix[b]
Out[23]: 2

In [24]: sr.ix[0]
Out[24]: 1

 

Series数据对齐

pandas在运算时,会按索引进行对齐然后计算。如果存在不同的索引,则结果的索引是两个操作数索引的并集。
s1 = pd.Series([12, 23, 34], index=[c, a, d])
s2 = pd.Series([11, 20, 10], index=[d, c, a])
print(s1 + s2)  # 按索引相加

s2 = pd.Series([11, 20, 10], index=[b, c, a])
print(s1 + s2)  # 按索引相加,出现Nan值

在两个Series对象相加时将缺失值设为0
s1.add(s2, fill_value=0)

 

技术分享图片

 

 

缺失数据处理

print(sr.isnull())  # 等于NaN是True
print(sr.notnull())  # 不等于NaN是True
print(sr[sr.notnull()])  # 过滤空值
print(sr.dropna())  # 过滤空值
print(sr.fillna(0))  # 填充空值

技术分享图片

 

 技术分享图片

 

 Pandas之DataFrame

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

 技术分享图片

 

 

创建方式及常用属性

data = [[1, 2, 3], [4, 5, 6]]
index = [x, y]
columns = [a, b, c]
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.loc[x])  # 指向x索引的行
print(df.iloc[1])  # 指向第二行
print(df.loc[x, a])  # 指向x索引的行,a列
print(df.loc[x, ])  # 指向x索引的行,所有列

print(df.index)  # 行索引
print(df.columns)  # 列索引
print(df.T)  # 转置
print(df.values)  # 值(二维数组)
print(df.describe())   # 每列的统计信息

 

技术分享图片

 

 技术分享图片

 数据对齐与缺失数据

 

DataFrame对象在运算时,同样会进行数据对齐,行索引与列索引分别对齐。
结果的行索引与列索引分别为两个操作数的行索引与列索引的并集。

DataFrame处理缺失数据的相关方法:

    • dropna(axis=0,where=‘any’,…) 过滤掉值为NaN的行
    • fillna() 填充缺失数据
    • isnull() 返回布尔数组,缺失值对应为True
    • notnull() 返回布尔数组,缺失值对应为False
df = pd.DataFrame({one: [1, 2, np.NAN], two: [a, np.NAN, np.NAN]})
print(df.fillna(0))  # 填充所有带有空的元素
print(df.dropna())  # 删除所有带有空的行
print(df.dropna(how=all))  # 删除所有每列都有空的行
df.loc[2, one] = 3  # 修改值
print(df)
print(df.dropna(axis=1))  # 删除为空值的列

技术分享图片

 

 

 

pandas:常用方法 

- mean        #求平均值
- sum         #求和
- sort_index  #按行或列索引排序
- sort_values  #按值排序
- apply(func,axis=0)  #axis=0指的是逐行,axis=1指的是逐列。
        df.apply(lamada x:x.mean())  #按列求平均
        df.apply(lamada x:x[high]+x["low"])/2,axis=1)  #按列求平均(最高价和最低价的平均)
        df.apply(lamada x:x[high]+x["low"])/2,axis=1)  #按列求平均(最高价和最低价的平均)
- applymap(func) #将函数应用在DataFrame各个元素上
- map(func) #将函数应用在Series各个元素上

举例:

df = pd.DataFrame({one:[1,2,3],two:[4,5,6],three:[7,8,9]} ,index=[a,b,c] )
print(df.mean()) # 按列求平均值
# one      2.0
# two      5.0
# three    8.0
print(df.mean(axis=1)) # 按行求平均值
# a    4.0
# b    5.0
# c    6.0

print(df.sum()) # 求和
# one       6
# two      15
# three    24
print(df.sort_values(by=two)) # 值排序
print(df.sort_values(by=two,ascending=False)) # 值排序(倒序)
print(df.sort_values(by=a,ascending=False,axis=1))  # 按行值排序(倒序)

print(df.sort_index()) # 索引值排序
print(df.sort_index(ascending=False)) # 索引值排序(倒序)
print(df.sort_index(ascending=False,axis=1))  # 按行索引值排序(倒序)

技术分享图片

 

 

 技术分享图片

 

 

 时间对象处理

Python标准库:datetime
    datetime.datetime.timedelta  # 表示 时间间隔
    dt.strftime() #f:format吧时间对象格式化成字符串
    strptime()  #把字符串解析成时间对象p:parse
    灵活处理时间对象:dateutil包
        dateutil.parser.parse(2019/1/29) 
    处理时间对象:pandas
        pd.to_datetime([2011-01-01, 2012-02-02])

产生时间对象数组:date_range start 开始时间 end 结束时间 periods 时间长度 freq 时间频率,默认为
D,可选H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es), S(econd), A(year),… 1、时间序列就是以时间对象为索引的Series或DataFrame。 2、datetime对象作为索引时是存储在DatetimeIndex对象中的。 3、时间序列特殊功能: 传入“年”或“年月”作为切片方式 传入日期范围作为切片方式 丰富的函数支持:resample(), strftime(), …… 批量转换为datetime对象:to_pydatetime()

举例

# 转换时间对象
print(pd.to_datetime([2001-01-01,2001-Feb-21]))
# 生成时间序列
print(pd.date_range(2010-01-01,2011-01-01))
print(pd.date_range(2010-01-01,periods=10))
print(pd.date_range(2010-01-01,periods=10,freq=H))  # 按小时
print(pd.date_range(2010-01-01,periods=10,freq=W)) # 按周
print(pd.date_range(2010-01-01,periods=10,freq=W-MON)) # 按周一
print(pd.date_range(2019-09-01,periods=30,freq=B)) # 按工作日

sr = pd.Series(np.arange(100),index=pd.date_range(2018-01-01,periods=100))
print(sr.index)
print(sr[2018-04])
print(sr[2018-03-01:2018-03-15])
print(sr.resample(M).sum())

技术分享图片

 

 技术分享图片

 

 

读取文件

read_csv  读取csv文件

read_excel 读取excel文件

读取文件函数主要参数:

  • sep 指定分隔符,可用正则表达式如‘\s+‘
  • header=None 指定文件无列名
  • name 指定列名
  • index_col 指定某列作为索引
  • skip_row 指定跳过某些行
  • na_values 指定某些字符串表示缺失值
  • parse_dates 指定某些列是否被解析为日期,布尔值或列表
print(pd.read_csv(600519.csv,index_col=0)) # 用第1列做索引

print(pd.read_csv(600519.csv,index_col=date))  # 用date列做索引

pd_csv = pd.read_csv(600519.csv,index_col=date,parse_dates=[date])  # 用date列做索引, 并转化为datetime类型
print(pd_csv.index)
df.rename(column={0:a,1:"b"})  #修改列名
print(pd.read_csv(600519.csv,header=None, names=list(abcdefgh)))  # 指定列名

pd.read_csv(600519.csv,header=None, na_values=[None])  # 指定字符串None为Nan

 

写入文件

1、写入到文件:

  • to_csv

2、写入文件函数的主要参数:

  • sep
  • na_rep 指定缺失值转换的字符串,默认为空字符串
  • header=False 不输出列名一行
  • index=False 不输出行索引一列
  • cols 指定输出的列,传入列表

3、其他文件类型:json, XML, HTML, 数据库

pandas使用

原文:https://www.cnblogs.com/xiao-apple36/p/11534698.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!