Pandas的NaN和numpy的np.nan是一回事
创建Series
Series是带标签的一维数组,Dataframe是Series的二维容器
import pandas as pd
t = pd.Series([1,1,1,1,1], index=...)
t.astype(float)
for i in t.index:
print(i)
type(t.index)
>>> pandas.indexes.base.Index
type(t.values)
>>> numpy.ndarray
不同类型存储为object
读取数据
df = pd.read_csv(...)
创建DataFrame
df = pd.DataFrame(np.arange(4),reshape=(2,2),index=list('ab'),columns=list('cd'))
提取
df[:2] # 取行用数字
df['Name'] # 取列用字符串
df[:2]['Name'] # 取行列
df.loc['a','z'] # 取行:标签索引
df.loc[:,['a','z']] # 取列:标签索引
df.iloc[1] # 取行:位置索引
df.iloc[:,1] # 取列:位置索引
筛选
df.mask(t>10) # 不符合条件为nan
df.where(t>10) # 不符合条件为nan
df.where(t>10,0) # 不符合条件为0
df[df['count']>100]
常用函数
df.ndim # 维度
>>> 2
df.head/tail(5)
df.info # 概览
df.describe() # 统计
df = df.sort_values(by=列名,ascending=False) # 排序
df['Age'].mean() # 空值不参与计算
# tolist函数
df.info().str.split('/').tolist()
len(set(df['Name'].tolist())) # 统计名字个数一
len(df['Name'].unique()) # 统计名字个数二
tmp = df['Name'].str.split(',').tolist() # 统计名字个数三
human = [i for j in tmp for i in j]
# human = np.array(tmp).flatten().tolist() 不一定成功
num = len(set(human))
pandas str方法的使用_Chipeyown的博客-CSDN博客_pandas str
NaN操作
pd.isnull(df) # 相当于numpy的isnan
pd.notnull(df)
# 删除空值行
df[pd.notnull(df['Name'])]
df.dropna(axis=0, how='any/all')
df.fillna(0)
df['Age'] = df['Age'].fillna(df['Age'].mean())
# 变为空值
df[1]['Age'] = np.nan