pandas基本技巧

数据查看

import numpy as np
import pandas as pd  
s = pd.Series(np.random.rand(50))
print(s.head())
print(s.tail())
# .head()查看头部数据
# .tail()查看尾部数据
# 默认查看5条
# 重新索引reindex
s = pd.Series(np.random.rand(3), index = ['a','b','c'])
print(s)
s1 = s.reindex(['c','b','a','d'])
print(s1)
# .reindex()中也是写列表
# 这里'd'索引不存在,所以值为NaN
s2 = s.reindex(['c','b','a','d'], fill_value = 0)
print(s2)
# fill_value参数:填充缺失值的值

Series对齐

import numpy as np
import pandas as pd  
s1 = pd.Series(np.random.rand(3), index = ['Jack','Marry','Tom'])
s2 = pd.Series(np.random.rand(3), index = ['Wang','Jack','Marry'])
print(s1)
print(s2)
# Series 和 ndarray 之间的主要区别是,Series 上的操作会根据标签自动对齐
# 空值和任何值计算结果扔为空值

删除:.drop

s = pd.Series(np.random.rand(5), index = list('ngjur'))
print(s)
s1 = s.drop('n')
s2 = s.drop(['g','j'])
print(s1)
print(s2)
print(s)
# drop 删除元素之后返回副本(inplace=False)

添加

import numpy as np
import pandas as pd  
s1 = pd.Series(np.random.rand(5))
s2 = pd.Series(np.random.rand(5), index = list('ngjur'))
print(s1)
print(s2)
print('*****'*5)
s1[5] = 100
s2['a'] = 100
print(s1)
print(s2)
print('*****'*5)
# 直接通过下标索引/标签index添加值
s3 = s1.append(s2)
print(s3)
print(s1)
# 通过.append方法,直接添加一个数组
# .append方法生成一个新的数组,不改变之前的数组

修改

import numpy as np
import pandas as pd  
s = pd.Series(np.random.rand(3), index = ['a','b','c'])
print(s)
print('*****'*5)
s['a'] = 100
s[['b','c']] = 200
print(s)
# 通过索引直接修改,类似序列

Dataframe 数据结构

# Dataframe是一个表格型的数据结构,“带有标签的二维数组”。
# Dataframe带有index(行标签)和columns(列标签)
import numpy as np
import pandas as pd  
df = {'name':['xiaoming','xiaogang','xiaoli'],
        'age':[18,19,20],
       'gender':['m','m','f']}
s1 = pd.DataFrame(df)
print(s1)  
print(type(s1))
print('*****'*5)
print(s1.index,'\n该数据类型为:',type(s1.index))
print(s1.columns,'\n该数据类型为:',type(s1.columns))
print('*****'*5)
print(s1.values,'\n该数据类型为:',type(s1.values))
# 查看数据,数据类型为dataframe
# .index查看行标签
# .columns查看列标签
# .values查看值,数据类型为ndarray

Dataframe 创建方法一:由数组/list组成的字典

# 创建方法:pandas.Dataframe()
data1 = {'a':[1,2,3],
        'b':[3,4,5],
        'c':[5,6,7]}
data2 = {'one':np.random.rand(3),
        'two':np.random.rand(3)}   # 这里如果尝试  'two':np.random.rand(4) 会怎么样?
print(data1)
print(data2)
print('*****'*5)
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
print(df1)
print(df2)
# 由数组/list组成的字典 创建Dataframe,columns为字典key,index为默认数字标签
# 字典的值的长度必须保持一致!

Dataframe 创建方法二:由Series组成的字典

import numpy as np
import pandas as pd  
data1 = {'one':pd.Series(np.random.rand(2)),
        'two':pd.Series(np.random.rand(3))}  # 没有设置index的Series
data2 = {'one':pd.Series(np.random.rand(2), index = ['a','b']),
        'two':pd.Series(np.random.rand(3),index = ['a','b','c'])}  # 设置了index的Series
print(data1)
print(data2)
print('*****'*5)
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
print(df1)
print(df2)
# 由Seris组成的字典 创建Dataframe,columns为字典key,index为Series的标签(如果Series没有指定标签,则是默认数字标签)
# Series可以长度不一样,生成的Dataframe会出现NaN值

Dataframe 创建方法三:通过二维数组直接创建

mport numpy as np
import pandas as pd  
data= np.random.rand(9).reshape(3,3)
print(data)
df1 = pd.DataFrame(ar)
df2 = pd.DataFrame(ar, index = ['a', 'b', 'c'], columns = ['one','two','three'])  
print('*****'*5)
print(df1)
print(df2)
# 通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不指定index和columns,两者均返回默认数字格式
# index和colunms指定长度与原数组保持一致

Dataframe 创建方法四:由字典组成的列表

data = [{'one': 1, 'two': 2}, {'one': 5, 'two': 10, 'three': 20}]
print(data)
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data, index = ['a','b'])
df3 = pd.DataFrame(data, columns = ['one','two'])
print(df1)
print(df2)
print(df3)
# 由字典组成的列表创建Dataframe,columns为字典的key,index不做指定则为默认数组标签
# colunms和index参数分别重新指定相应列及行标签

Dataframe 创建方法五:由字典组成的字典

data = {'xiaoming':{'math':90,'english':89,'art':78},
       'xiaogang':{'math':82,'english':95,'art':92},
       'xiaohong':{'math':78,'english':67}}
df1 = pd.DataFrame(data)
print(df1)
# 由字典组成的字典创建Dataframe,columns为字典的key,index为子字典的key
df2 = pd.DataFrame(data, columns = ['xiaoming','xiaogang','xiaohong'])
df3 = pd.DataFrame(data, index = ['a','b','c'])
print(df2)
print(df3)
# columns参数可以增加和减少现有列,如出现新的列,值为NaN
# index在这里和之前不同,并不能改变原有index,如果指向新的标签,值为NaN 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值