python pandas 详解

python pandas 详解

此文是依据10min学习pands 翻译版 官方链接 https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np


#创建一个整数索引
a = pd.Series([1,3,5,np.nan,6,8])
#创建日期
data = pd.date_range('2013',periods=6)

df = pd.DataFrame(np.random.randn(6,4),index= data,columns = list('ABCD'))

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'})
# 查看 df的前五行
df.head()
# 查看 df的后三行
df.tail(3)
# 查看df的列标
df.index
# 查看df的行标签
df.columns
# DataFrame.to_numpy()给出基础数据的NumPy表示形式。
# 请注意,当您的DataFrame列具有不同的数据类型时,这可能是一项昂贵的操作,
# 这归结为pandas和NumPy之间的根本区别:NumPy数组在整个数组中具有一个dtype,
# 而pandas DataFrames每列具有一个dtype。当你打电话 DataFrame.to_numpy(),
# 熊猫会发现NumPy的D型,可容纳所有 的dtypes的数据帧。可能最终是object,这需要将每个值都转换为Python对象。
df.to_numpy()
# 显示数据的快速统计摘要(对一列进行 最大小值 平均数等)
df.describe()
#行列转换
df.T
#按行坐标排序
df.sort_index()
#按列坐标进行排序
df.sort_index(axis=1)
#对A列按值排序
df.sort_values(by='A')
#获取A列
df['A']
# 切片获取前三行
df[0:3]
#按纵坐标获取指定行数
df['20130102':'20130104']
# 获取第一行各列数据
df.loc[data[0]]
# 带行标签获取指定列全部数据
df.loc[:,['C','B']]
#获取指定行的指定列数据(带标签)
df.loc['20130102':'20130104',['A','B']]
#获取指定行指定列的数据
df.loc['20130102',['A','B']]
#获取第一行一列的数据
df.loc[data[0],'A']
#获取第三行每一列的数据
df.iloc[3]
#切片获取指定行指定列的数据
df.iloc[3:5,0:2]
#获取指定行指定列的数据
df.iloc[[1,2,4],[0,2]]
#切片获取指定行 所有列的数据
df.iloc[1:3, :]
#切片获取所有行指定列的数据
df.iloc[:,1:3]
#获取指定行列的数据
df.iloc[1,1]
#显示大于0的数据
df[df > 0]
#显示A列大于0的数的所有行和列
df[df > 0]
#复制df到df2 会顶替掉df2原来的内容
df2 = df.copy()
#df2加一列 列标签是E 后面为列内容
df2['E'] = ['one','one','two','three','four','five']
#isin()接收一个列表判断该列中元素是否在列表中
df2[df2['E'].isin(['two','four'])]
#创建一列 ,为df新增一列F F的值按行索引对齐添加
s1 = pd.Series([1,2,3,4,5,6],index=pd.date_range('20130102',periods = 6))
df['F'] = s1
#通过标签设置值
df.at[data[0],'A'] = 0
#按位置设置值
df.iat[0,1] = 0
#通过分配numpy数组进行设置值
df.loc[:,'D'] = np.array([5]*len(df))
#将df2中大于零的数组全部转变成负的
df2 = df.copy()
df2[df2 > 0] = -df2
#reindex()为数据换新的索引值,如果索引值内没有数据用nan代替
df1 = df.reindex(index = data[:4],columns = list(df.columns) + ['E'])
#为第第一行和第二行所对应的的E列赋值
df1.loc[data[0]:data[1],'E'] = 1
#删除所有任务带有无值数据的行
df1.dropna(how = 'any')
#填充所有无值的数据
df1.fillna(value=5)
#用布尔值去显示缺失值所在的位置
pd.isna(df1)
#对每一列求平均值
df.mean(0)
#求每一行的平均值
df.mean(1)
#行索引位置不变,值向下移动两位
s = pd.Series([1,3,5,np.nan,6,8],index=data).shift(2)
s1 = pd.Series([1,3,5,np.nan,6,8],index=data)
#df-s axis 为index列
df.sub(s, axis='index')
#apply聚合 下一行的值为上两行值的和
df.apply(np.cumsum)
#lambda  冒号前是参数,冒号后是表达参数 对每一列进行最大值减最小值
df.apply(lambda x:x.max() - x.min())
#随机创建数列 0<n<7 行标签十个索引
c = pd.Series(np.random.randint(0,7,size=10))
#统计每一个元素出现的次数
c.value_counts()
#将内容全部变成小写
d = pd.Series(['A','B','C','AaBa','Baca',np.nan,'CABA','dog','cat'])
d.str.lower()
#按切片分别获取指定行数据
e = pd.DataFrame(np.random.randn(10,4))
piece = [e[:3],e[3:7],e[7:]]
#按上下将数据合并
pd.concat(piece)
#合并数据
left = pd.DataFrame({'key':['foo','foo'],'lval':[1,2]})
right = pd.DataFrame({'key':['foo','foo'],'rval':[4,5]})
pd.merge(left,right,on='key')
#将q加到f的最后一行
f = pd.DataFrame(np.random.randn(8,4),columns=['A','B','C','D'])
q = f.iloc[3]
f.append(q,ignore_index=True)
#按A标签分类计算每一类数据的合
g = pd.DataFrame({'A':['foo','bar','foo','bar',
                       'foo','bar','foo','foo'],
                  'B':['one', 'one', 'two', 'three',
                       'two', 'two', 'one', 'three'],
                  'C':np.random.randn(8),
                  'D':np.random.randn(8)})
g.groupby('A').sum()
#按A,B列标签分类计算每一类数据的和
g.groupby(['A','B']).sum()
#zip函数 将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',
                     'foo', 'foo', 'qux', 'qux'],
                    ['one', 'two', 'one', 'two',
                     'one', 'two', 'one', 'two']]))
# MultiIndex.from_tuplse混合函数
index = pd.MultiIndex.from_tuples(tuples,names=['first','second'])
x = pd.DataFrame(np.random.randn(8,2),index=index,columns=['A','B'])
xx = x[:4]
#压缩DataFranme 的级别 将两列 压缩为一列
stacked = xx.stack()
#解压缩
stacked.unstack(1)
#将第0列解压缩
stacked.unstack(0)
#对数据h形成一个数据透析表
h = pd.DataFrame({'A': ['one', 'one', 'two', 'three'] * 3,
                  'B': ['A', 'B', 'C'] * 4,
                  'C': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,
                  'D': np.random.randn(12),
                  'E': np.random.randn(12)})
pd.pivot_table(h, values='D',index=['A','B'],columns=['C'])
#n内置参数 开始时间 periods 间隔时间, frep 按照什么间隔,ts,resample 默认按axis = 0 5MIN是时间范围 进行合并
rng = pd.date_range('1/1/2012',periods=100,freq='S')
ts = pd.Series(np.random.randint(0,500,len(rng)),index=rng)
ts.resample('1Min').sum()
#时区定位和时区转换
qwe = pd.date_range('3/6/2012 00:00',periods=5,freq='D')
sd = pd.Series(np.random.randn(len(qwe)),qwe)
sd_utc = sd.tz_localize('UTC')
# sd_x = sd.tz_convert('US/Eastern')
#强制变换数据类型
v = pd.DataFrame({'id':[1,2,3,4,5,6],
                  "raw_grade":['a','b','b','a','a','e']})
v['grade'] = v['raw_grade'].astype('category')

#将grade重新换数据[]按类顺序依次
v['grade'].cat.categories = ['very good ','good','very bad']
#按grade 排序
v.sort_values(by='grade')
#对grade进行计数
v.groupby('grade').size()
# cumsum 计算轴向元素累加
b = pd.Series(np.random.randn(1000),
              index=pd.date_range('1/1/2000',periods=1000))
b = b.cumsum()
b.plot()
print(plt.show())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值