打印dataframe的前十行_机器学习 Pandas 06:进阶 前04题 ( 带答案、注释 )

1. 带标签的Series

import pandas as pd
import numpy as np

# Series

s = pd.Series([1,3,6,np.nan,44,1])
print(s)

s = pd.Series([1,3,6,np.nan,44,1],index=[3,4,3,7,8,9])
print(s)

# 默认index从0开始,如果想要按照自己的索引设置,则修改index参数,如:index=[3,4,3,7,8,9]

2. 构建DataFrame

dates = pd.date_range('2018-08-19',periods=6)

df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
print(df)

# dates = pd.date_range('2018-08-19',periods=6) 与 dates = pd.date_range('2018-08-19','2018-08-24')等价,第二种方法直接表示起始、结束。
# numpy.random.randn(d0, d1, …, dn)是从标准正态分布中返回一个或多个样本值。
# numpy.random.rand(d0, d1, …, dn)的随机样本位于[0, 1)中。
# (6,4)表示6行4列数据
# DataFrame既有行索引也有列索引, 它可以被看做由Series组成的大字典。
print(df['b'])

# 打印b列数据,其中包括了行索引
df1 = pd.DataFrame(np.arange(12).reshape(3,4))
print(df1)

# 未指定行标签和列标签的数据时,默认行、列标签为从0开始的数字索引。
df2 = pd.DataFrame({
    'A': [1,2,3,4],
    'B': pd.Timestamp('20180819'),
    'C': pd.Series([1,6,9,10],dtype='float32'),
    'D': np.array([3] * 4,dtype='int32'),
    'E': pd.Categorical(['test','train','test','train']),
    'F': 'foo'
})
print(df2)

# 这是另一种方式表示DataFrame
# .Timestamp获得时间戳,这里有隐藏的时间戳,因为显示长度不够,所以部分被隐藏了
# [3] * 4 表示数组中有3个4,与[3,3,3,3]等价
print(df2.index)

# 打印df2的行索引
print(df2.columns)

# 打印df2的列索引
print(df2.values)

# 打印df2中的值
print(df2.describe())

# 将df2中的数据(这里只有A、C、D列)总结,总结它们的不重复值、平均值、标准差....
df2.T

# 翻转数据
# print(np.transpose(df2))等价于上述操作
print(df2.sort_index(axis=1,ascending=True))

print(df2.sort_index(axis=1,ascending=False))

# axis=1表示行,axis=0表示列。
# ascending=True表示升序,ascending=False表示降序,默认ascending(升序)为True
# 上面两行分别表示按行升序与按行降序
print(df2.sort_index(axis=0,ascending=False))
print(df2.sort_index(axis=0,ascending=True))

# 表示按列降序与按列升序
print(df2.sort_values(by='C',ascending=False))

# 对特定列数值排列
# 表示对C列降序排列

3. Pandas选择数据

import pandas as pd
import numpy as np
dates = pd.date_range('20180819', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['A','B','C','D'])
print(df)
print(df['A'])

# 检索A列
print(df.A)

# 第二种方法,检索A列
print(df[0:3])

# 选择跨越多行或多列
# 选取前3行
print(df['2018-08-19':'2018-08-21'])

# 打印第2018-08-19到2018-08-21行之间的数据
print(df.loc['20180819'])

# 根据标签选择数据
# 获取特定行或列
# 指定行数据
print(df.loc[:,'A':'B'])

# 指定列,这里前面的第一个:表示未指定行,所以打印全部的行
print(df.loc[:,['A','B']])

# 第二种方式,指定列。
print(df.loc['20180819',['A','B']])

# 行与列同时检索
print(df.iloc[3,1])

# 根据序列iloc
# 获取特定位置的值
print(df.iloc[3:5,1:3]) 

# 不包含末尾5或3,同列表切片
print(df.iloc[[1,4],1:3])

# 打印第1行和第4行,第1列至第3列
print(df.iloc[[1,2,3],1:3])

# 打印第1行和第4行以及中间的行,步长为2-1,第1列至第3列
print(df.ix[:3,['A','C']])

# 混合选择,这里的提示说.ix被删除了,建议使用.loc和.iloc
print(df.iloc[:3,[0,2]]) 

# 结果同上
print(df[df.A>8])

# 通过判断的筛选,A列中大于8的数据为True,再打印这些行
print(df.loc[df.A>8])

# 第二种方法,通过判断的筛选
print(df.loc['20180819','A':'B'])
print(df.iloc[0,0:2])
print(df.ix[0,'A':'B'])

# 这三种操作,输出结果相同

4. 创建数据

import pandas as pd
import numpy as np

dates = pd.date_range('20180820',periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4), index=dates, columns=['A','B','C','D'])
print(df)

# 创建数据
df.iloc[2,2] = 111
df.loc['20180820','B'] = 2222
print(df)

# 根据位置设置loc和iloc
df.B[df.A>4] = 0
print(df)

# 根据条件设置
# 更改B中的数,而更改的位置取决于4的位置,当A列中的元素大于4的时候,将B列相应位置的数设置为0
df.B.loc[df.A>4] = 0
print(df)

# 第二种方法
df['F'] = np.nan
print(df)

# 按行或列设置
# 列批处理,F列全改为NaN
df['E'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20180820',periods=6))
print(df)

# 添加Series序列(长度必须对齐)
df.ix['20180820','A'] = 56
print(df)

# 设定某行某列为特定值
#ix 以后要剥离了,尽量不要用了
df.loc['20180820','A'] = 67
print(df)

# 第二种方法
df.iloc[0,0] = 76
print(df)

# 第三种方法
df.iloc[1] = np.nan # df.iloc[1,:]=np.nan
print(df)

# df.iloc[1]相当于df.iloc[1,:]=np.nan,修改一整行数据
df.loc['20180820'] = np.nan # df.loc['20180820,:']=np.nan
print(df)

# df.loc['20180820'] = np.nan 相当于 df.loc['20180820,:']=np.nan
df.ix[2] = np.nan 
print(df)

# df.ix[2] = np.nan 相当于 df.ix[2,:]=np.nan
df.ix['20180823'] = np.nan
print(df)

# 第四种方法

更多《机器学习》,关注专栏 ♬ ♬

注:因为专栏不止我一位作者!

加油!♥

  • 2
    点赞
  • 1
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值