Pandas的简单使用

Pandas

import pandas as pd

基本创建

# Series的创建
s = pd.Series([1,2,3,4,5,6]) # 生成带索引的一维序列
print(s)

# Series可以使用index设置索引,可以重复
s = pd.Series(['a','b','c','d','e'],index=[100,200,100,400,500])
print(s)

# Series 可以用字典实例化
d = {'b': 1, 'a': 0, 'c': 2}
s = pd.Series(d)
print(s)

# 切片
s = pd.Series(np.array([1,2,3,4,5]), index=['a', 'b', 'c', 'd', 'e'])
print(s[1:])
print(s[:-1])
print(s[1:] + s[:-1])
# DataFrame的基本创建
df = pd.DataFrame(np.arange(12).rshape((3,4)))
print(df)
print(df.index)   # 打印行的名字
print(df.columns) # 打印列的名字
print(df.dtypes)  # 打印每一列的数据类型
print(df.sample(10)) # 随机选择10行数据

# 用多维数组字典、列表字典生成 DataFrame
data = 
{'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 
 'year': [2000, 2001, 2002, 2001, 2002], 
 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = pd.DataFrame(data)
print(frame)

# 如果指定了列顺序,则DataFrame的列就会按照指定顺序进行排列,同理可以指定列的索引index
frame1 = pd.DataFrame(data, columns=['year', 'state', 'pop'])
print(frame1)

# 跟原Series一样,如果传入的列在数据中找不到,就会产生NAN值
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])
print(frame2)

# 通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series,返回的Series拥有原DataFrame相同的索引
print(frame2['state'])

# 列可以通过赋值的方式进行修改,例如,给那个空的“delt”列赋上一个标量值或一组值
frame2['debt'] = 16.5
print(frame2)

# 两列相乘生成新的列
frame2['new'] = frame2['debt' ]* frame2['pop'] 
print(frame2)

处理数据

df = pd.DataFrame(np.arange(12).reshape((3,4)),columns=['A','B','C','D'])
print(df.T) # DataFrame的转置

# DataFrame排序
df1 = df.sort_index(axis=1, ascending=False)  # 对列名进行排序,因为操作的是一行列名,所以axis=1
print(df1)
df2 = df.sort_index(axis=0, ascending=False) # 对行名进行倒排序,ascending属性为False
print(df2)
df3 = df.sort_values(by='A',ascending=False)
print(df3)# 对单行(列)的值进行排序

# DataFrame选择
print(df['A']) # 单列选择
print(df.B)    # 单列选择
print(df[1:3]) # 行范围选择
print(df.loc[0:1,['A','C']]) # 通过索引名称选择指定行和列
print(df.iloc[1:3, 1:3])     # 通过位置选择指定行和列

# DataFrame设置值
df.iloc[1,1] = 999 # 通过iloc改变值
df[df.A>4] = 0     # 通过真值表达式筛选索引改变值
# 处理丢失数据
df = pd.DataFrame(np.arange(24).reshape((6,4)),columns=['A','B','C','D'])
df.iloc[0,1] = np.nan
df.iloc[1,2] = np.nan
print(df.dropna(axis=0, how='any')) # 表示有任意的一个NaN,就把该行删除掉
print(df.dropna(axis=1, how='all')) # 表示有某行(列)都为NaN,就把该列删除
print(df.fillna(value=0)) # 给为NaN的数据填充指定值
print(np.any(df.isnull()) == True) # 判断当前表格是否有丢失值
print(df.any()) # df中有一个为True,返回True
print(df.all()) # df中全为True,返回True

表格合并

df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a', 'b', 'c', 'd'])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a', 'b', 'c', 'd'])
df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a', 'b', 'c', 'd'])
df = pd.concat([df1, df2, df3], axis=0, ignore_index=True) # 纵向合并表格,并重新设置索引
print(df)

# 设置连接参数join
df = pd.concat([df1, df2], join='outer') # 外连接,全部合并,空值填充
print(df)
df = pd.concat([df1, df2], join='inner') # 内连接,合并相同列,删除不同列
print(df)

画图

s = pd.Series(np.random.randn(1000), index=np.arange(1,1001))
s = s.cumsum()
s.plot()
plt.show()

df = pd.DataFrame(np.random.randn(1000,5), index=np.arange(1,1001),columns=list('ABCDE'))
df = df.cumsum()
df.plot()
plt.show()
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值