DataFrame包含索引和数据
- 基本操作
df.dtypes 显示每列的数据类型
df.head()
df.tail(3)
df.index
df.columns
df.columns=['name','url','band'] 重命名列名
df.values
df.describe()
df.T 对数据进行转置
df.sort(columns='likes')
2、选取数据
df['A'] A是列名
df[1:5] 索引1~4行的数据
df.loc[0:3,['nickname','likes']] 按索引,取nickname,likes数据
(包括索引3的数据,共4条)
df.loc[:,['articles','likes','nickname']] 取指定3列的全部数据
df.at[0,'url'] 取第一行数据的url值
df[df.articles>50] 选择articles大于50的记录
3、数据去重
newdf = df.drop_duplicates() 返回一个新的dataframe
data.drop_duplicates(['k2']) 按列去重
4、缺失数据处理
1)数据补齐,用一定的值去填充
newdf = df.dropna()
2)删除对应缺失行
3)不处理
5、空格值处理
strip() 清理值前后的空格
newname = df['name'].str.strip()
6、字段抽取
slice(start,stop)
df['tel']=df['tel'].astype(str)
bands = df['tel'].str.slice(0,3)
7、字段拆分
split(sep,n,expand=False)
sep 用于分割的字符串
n 分割为多少列
expand True, 返回DataFrame; False, 返回Series
newdf = df['name'].str.split(' ',1,True)
8、字段合并
DataFrame不同列合并操作,列先需要转为字符型
x = x1+x2+...
9、数据抽取 (数据过滤)
1)比较运算
df[df.comment>200]
2)范围运算
df[df.articles.between(50,100)]
3)空值匹配
df[pandas.isnull(df.title)]
4)字符匹配
df[df.title.str.contains('Apple',na=False)]
na=False表示空值不匹配
5)逻辑运算
与(&), 或(|), 取反(not)
df[(df.comments>=500) & (df.comments<=1000)]
10、随机抽样
numpy.random.randint(start,end,number)
start 范围的开始值
end 范围的结束值
number 抽样个数
11、记录合并
将两个DataFrame合并
df = pandas.contact([df1,df2,df3])
12、字段匹配
相当SQL多表联合查询(内连接)
newdf = pandas.merge(
item,
price,
left_on='id',
right_on='id'
)
两个dataframe, item和price ,由id进行连接
13、计算列
对列进行简单计算
result = df.price* df.num
df['sum']=result
14、日期转换
from pandas import to_datetime
df_dt=to_datetime(df.regtime, format='%Y-%m-%d')
15、日期格式化
将日期型的数据,按照给定的格式,转为字符型的数据
apply(lambda x: 处理逻辑)
datetime.strftime(x,format)
df_dt_str=df_dt.apply(lambda x: datetime.strftime(x,'%Y-%m-%d'))