Pandas的简单入门

本文介绍了Pandas,一个强大的Python数据分析库。通过示例展示了如何安装Pandas,创建Series和DataFrame,以及数据操作,如查看、排序、处理缺失值。还涉及了时间序列分析和数据导入导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:pandas是一个非常重要的用于数据分析和处理的python包,并且它也是开源的它不仅提供了很多方法,使得数据处理非常简单,同时在数据处理速度上也做了很多优化,使得和python内置方法相比时有了很大的优势。

Pandas的安装(Ubuntu)
sudo pip3 install pandas
安装好之后进入终端
导入包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
创建一个Series(序列,索引值默认从0开始)
s = pd.Series([1,3,5,np.nan,6,8])
s
Out[5]:
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

dates = pd.date_range('20160130', periods=6)  (生成一个起始为'20160130'的时间序列s)
dates
dates2=pd.date_range('20160130','20180322')
dates2

创建一个dataframe对象
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
df
Out[9]:
                   A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988
np.random.randn(6,4)是指从标准正态分布中返回一个或多个样本值6行,4列

查看数据的方法:
df.head(2)  显示前两列,如果不带参数会显示全部
df.tail(2)  显示后两列
df.index    查看该对象的索引
df.columns  查看行
df.values   查看值
df.describe()  对每一列数据进行统计,包括计数,均值,std
df.T    对其进行转置
df.sort_index(axis=1,ascending=False)  对所有的行进行排序,降序,参数缺省时默认升序
df.+<tab>   自己去查看其它方法,我就不一一列举了


以字典的方式创建一个dataframe的对象
df2 = pd.DataFrame({ 'A' : 1.,
   'B' : pd.Timestamp('20130102'),
   'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
   'D' : np.array([3] * 4,dtype='int32'),
   'E' : pd.Categorical(["test","train","test","train"]),
   'F' : 'foo' })

df2
Out[11]:
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo
df2.dtypes  查看结构


操作对象的一些方法:
df['A']   查看A列的值
df[0:3]   查看前三行的数
df['20130101':'20130103']  同上
loc是通过标签来选择数据
df.loc['20130102',['A','B']]  选择特定行的特定列
df.loc[:,['A','B']]  选择特定行的所有列
iloc通过位置来选择数据,用法同loc类似
df.iloc[3:5,0:2]   切片选择行标3到5之间的列标0到2之间的数据
另外还可以通过条件来选择数据
如:df[df >0]   选择数据对象中所有大于0的数据

copy()方法 拷贝数据
df2=df.copy()  拷贝df的所有内容到df2
df2['E']=['one','two','three','four','five','six']   为df2增加一列E
isin(x)方法 判断x是否在数据集中
df2[df2['E'].isin(['one'])

缺失值处理的几种方法
df.reindex()  用来对指定轴上的索引进行改变/增加/删除操作
df.fillna(value=x)  用值为x的数对缺失值进行填充
df.dropna(how='any')  去掉所有包含缺失值的行

df3=df.reindex(index=dates[0:4],columns=list(df.columns)+['E'])  复制df里的数据到df3中
df3.loc[dates[0]:dates[1],'E']=1     将指定行的值指定列值给1,每给值的是就是缺失的
df3
pd.isna(df3)   通过bool值来查找哪些值缺失
df.fillna(value=x)  用值为x的数对缺失值进行填充
df.dropna(how='any')  去掉所有包含缺失值的行
以上自己练习操作,不再示例
合并的几个方法
a.contact
df4=pd.DataFrame(np.random.randn(10,4))  创建一个10行4列的随机数据集
pieces=[df4[:3],df4[3:7],df4[7:]]   将该数据集切成3片
pd.concat(pieces)   将切片粘合起来
b.append
s=df.iloc[3]    将df中的第四行复制到s序列,从0开始计数
df.append(s,ignore_index=True)   将该列添加到df的尾行,也可以指定

c.merge
left=pd.DataFrame({'key':['foo','foo'],'val':[10,30]})
right=pd.DataFrame({'key':['foo','foo'],'val':[8,7]})
pd.merge(left,right,on='key')   将上面两个粘合起来

对数据分组的方法
df5=pd.DataFrame({'A':['foo','bar','foo','bar'],
    'B':['one','two','one','two'],
    'C':np.random.randn(4),
    'D':np.random.randn(4)})
df5.groppby('A').sum()

其他方法:
df.mean()  默认对每一列求均值
df.mean(1)  对每一行求均值
分组(groupby)
df.['x'].values_counts()  统计某x列中各个值的出现次数
df.apply(lambda X:X.max()-X.min()) 返回指定列中最大与最小的差值

时间序列(Series)
生成一个时间序列并画图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
a=pd.Series(np.random.randn(1000),index=pd.date_range('20160130',periods=1000))
b=a.cumsum()
b.plot()
plt.show()

导入和导出文件
a.to_csv('time.csv')  存为csv
a=pd.read_csv('time.csv')  读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值