pandas DataFra,学习笔记大全

读取数据

数据预处理

import pandas as pd
df = pd.read_csv('name.csv',na_values='无',index_col=0)
#读取时会把‘无’替换为nan,index_col=0以文本索引为索引
#
#content = [json.loads(line) for line in open(path,encoding='utf-8')]

查看前几行:df.head()
查看尾几行:df.tail()
查看信息:df.info()
查看字段名称:df.columns
查看字段形态:df.dtypes
取得叙述性统计(数值):df.describe()

数据更改

  • 更改数据格式:df['price'].astype('int')
  • 更改列名称:df.rename(columns={'category': 'category-size'})

数据筛选

  • 筛选字段**:df['产权性质'].value_counts()
  • 筛选指定内容:df[df['age']>20]
  • 筛选多个指定内容 df[(df['租金(元)']<2000) & (df['面积(平米)']>20)]
df[~df['A'].isin(['null'])] #选取df中A列不包含‘null’的行
df = df[df['decorate'].isin(['精装修','豪华装修','简装修'])]#多条件筛选
df1[df1['A'].isin([1])]  #选取df1中A列包含数字1的行

数据排序

data.sort_values(by=(['My_score','acreage']),ascending=False)
#ascending选择升序或降序排列

移除重复数据

  • drop_duplicates方法,它用于返回一个移除了重复行的DataFrame:
import pandas as pd

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
print(data)
print(data.drop_duplicates())

移除重复数据

  • 移除指定栏位的重复行:
import pandas as pd

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
data['v1']=range(7)
print(data)
print(data.drop_duplicates(['k1','k2']))

移除重复

新增/删除栏位

  • 新增:
df['employee'] = True
  • 删除:
del df['employee']
#df = df.drop('employee',1)

栏位处理

设定新的索引

df['userid'] = range(1,10)
df.set_index('userid',inplace=Ture)

根据位置索引取值

Pandas中iloc和loc以及ix的区别

  • 根据位置
    位置取值
  • 根据索引

索引取值

处理缺失值

- 检查缺失值

检查非缺失值:df[‘gender’].notnull()
检查缺失值:df[‘gender’].isnull()

  • 检查DataFrame是否还有缺失值:df.isnull().values.any()
  • 检查字段是否还有缺失值:df['name'].isnull().values.any()

  • 检查字段缺失值的数量: df.isnull().sum()

  • 计算所有缺失值的数量:df.isnull().sum().sum()
    侦测缺失值:df.isnull() 或 df.isnull().any()
    查看缺失比例:df.isnull().sum()/df.count()

–显示缺失值

  • 显示缺失值行列:
df[df.isnull().values==True]

- 舍弃缺失值

舍弃含有任意缺失值的行:df.dropna()
舍弃所有字段都含有的缺失值的行:df.dropna(how='all')
舍弃超过两栏缺失值的行:df.dropna(thresh=2)
增加一包含缺失值的列:df['emplyee'] = np.ana
舍弃皆为缺失值的列:df.dropna(axis=1,how='all')

扫描二维码关注公众号,回复: 3151091 查看本文章

- 填补缺失值

用0填补:df.fillna(0)
用平均数缺失值:df['age'].fillna(df['age'].mean())
用性别平均值填补:df['age'].fillna(df.groupby('gendre')['age'].transform('mean'),inplace=True)

  • 向前向后填补
    向前:df.fillna(method='pad')
    向后:df.fillna(method='bfill',limit=2)

  • 使用内插法填补
    按照一定规律:df.interpolate()

资料转换 Apply,Map,ApplyMap

  • map将函数套用到Series上的每个元素
def removeDollar(e):
    retrun e.split("元")[0]
df['价格'].map(removeDollar)

使用匿名函数

df['价格'].map(lambda e: e.split('元')[0])
  • apply将函数套用到DataFrame上的行与列
    这里写图片描述
  • applymap将函数套用到DataFrame上的每个元素
    这里写图片描述

处理时间格式资料

  • 打印出现在的时间
from datetime import datetime
current_time = datetiem.now()

将时间转换为字符串

current_time.strftime(‘%Y-%m-%d’)

将字符串转换为时间

current_time.strftime(’2018-01-01‘,’%Y-%m-%d‘)

时间格式:西年2018年01月01日
pandas处理:
时间格式转换

  • pandas中使用正则:

正则表达式使用

猜你喜欢

转载自blog.csdn.net/qq_42988748/article/details/82454447