入门使用"/>
pandas入门使用
一、基本概念
import pandas as pd
基于字典创建dataframe对象,注意DF要大写,key为列名 列表内容为每一行的值
df = pd.DataFrame({"Name":['people1', 'people2'],"Age" :[18, 19]
})
df
Name | Age | |
---|---|---|
0 | people1 | 18 |
1 | people2 | 19 |
列被称作column,行被称作row 每一列都是一个Series对象,整体是DataFrame对象
访问其中的一列
name = df['Name']
name
0 people1
1 people2
Name: Name, dtype: object
type(name)
pandas.core.series.Series
对series使用函数
df['Age'].max()
19
数值型数据的统计信息
df.describe()
Age | |
---|---|
count | 2.000000 |
mean | 18.500000 |
std | 0.707107 |
min | 18.000000 |
25% | 18.250000 |
50% | 18.500000 |
75% | 18.750000 |
max | 19.000000 |
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 2 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 Name 2 non-null object1 Age 2 non-null int64
dtypes: int64(1), object(1)
memory usage: 160.0+ bytes
小结:dataframe的创建、series的生成和使用函数、数值型column的基本信息
二、打开文件
pandas支持打开多种格式的文件:csv excel sql json等为dataframe结构
用head方法可以访问前面的指定的行,而且是dataframe结构
test = pd.read_csv('test_text.csv')
test.head(2)
Unnamed: 0 | 微博id | 微博发布时间 | 发布人账号 | 微博中文内容 | 微博图片 | 微博视频 | |
---|---|---|---|---|---|---|---|
0 | 0 | 4456068992182160 | 01月01日 23:38 | -精緻的豬豬女戰士- | #你好2020#新年第一天元气满满的早起出门买早饭结果高估了自己抗冻能力回家成功冻发烧(大概... | ['... | [] |
1 | 1 | 4456424178427250 | 01月02日 23:09 | liujunyi88 | 大宝又感冒鼻塞咳嗽了,还有发烧。队友加班几天不回。感觉自己的情绪在家已然是随时引爆的状态。情... | [] | [] |
获取列名
test.columns
Index(['Unnamed: 0', '微博id', '微博发布时间', '发布人账号', '微博中文内容', '微博图片', '微博视频'], dtype='object')
获取数据类型
test.dtypes
Unnamed: 0 int64
微博id int64
微博发布时间 object
发布人账号 object
微博中文内容 object
微博图片 object
微博视频 object
dtype: object
转换为excel
test.head(5).to_excel('test_text.xlsx', sheet_name='test', index=False) # 要安装相关的依赖包
pd.read_excel('test_text.xlsx', sheet_name='test')
三、表格子集
列选的方式
test[['微博中文内容']].head(3) # 所以head可以作用域df和series
微博中文内容 | |
---|---|
0 | #你好2020#新年第一天元气满满的早起出门买早饭结果高估了自己抗冻能力回家成功冻发烧(大概... |
1 | 大宝又感冒鼻塞咳嗽了,还有发烧。队友加班几天不回。感觉自己的情绪在家已然是随时引爆的状态。情... |
2 | 还要去输两天液,这天也太容易感冒发烧了,一定要多喝热水啊? |
test['微博中文内容'].head(3).to_csv('hello.csv')
当访问超过1列时返回dataframe结构
test[['微博发布时间', '微博中文内容']].head(2)
微博发布时间 | 微博中文内容 | |
---|---|---|
0 | 01月01日 23:38 | #你好2020#新年第一天元气满满的早起出门买早饭结果高估了自己抗冻能力回家成功冻发烧(大概... |
1 | 01月02日 23:09 | 大宝又感冒鼻塞咳嗽了,还有发烧。队友加班几天不回。感觉自己的情绪在家已然是随时引爆的状态。情... |
选取特定的行-类似于sql where
df
Name | Age | |
---|---|---|
0 | people1 | 18 |
1 | people2 | 19 |
df[df['Age']>18] # 逐行检查
Name | Age | |
---|---|---|
1 | people2 | 19 |
df[df['Age'].isin([18,19])] # 闭区间,注意isin的点和括号
Name | Age | |
---|---|---|
0 | people1 | 18 |
1 | people2 | 19 |
去除空行
train_label = pd.read_csv('100k_train.csv')
train_label.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100000 entries, 0 to 99999
Data columns (total 7 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 微博id 100000 non-null int64 1 微博发布时间 100000 non-null object2 发布人账号 100000 non-null object3 微博中文内容 99646 non-null object4 微博图片 100000 non-null object5 微博视频 100000 non-null object6 情感倾向 99919 non-null object
dtypes: int64(1), object(6)
memory usage: 5.3+ MB
train_label[train_label['微博中文内容'].notna()].info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 99646 entries, 0 to 99999
Data columns (total 7 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 微博id 99646 non-null int64 1 微博发布时间 99646 non-null object2 发布人账号 99646 non-null object3 微博中文内容 99646 non-null object4 微博图片 99646 non-null object5 微博视频 99646 non-null object6 情感倾向 99566 non-null object
dtypes: int64(1), object(6)
memory usage: 6.1+ MB
特定的行和列
train_label[['微博中文内容']].head(3)
微博中文内容 | |
---|---|
0 | 写在年末冬初孩子流感的第五天,我们仍然没有忘记热情拥抱这2020年的第一天。带着一丝迷信,早... |
1 | 开年大模型…累到以为自己发烧了腰疼膝盖疼腿疼胳膊疼脖子疼#Luna的Krystallife#? |
2 | 邱晨这就是我爹,爹,发烧快好,毕竟美好的假期拿来养病不太好,假期还是要好好享受快乐,爹,新... |
train_label.loc[train_label['情感倾向']=='1', '微博中文内容'] # 逗号之前是条件,之后是选择的内容,default为全表,条件和选择的内容都可以是list
2 邱晨这就是我爹,爹,发烧快好,毕竟美好的假期拿来养病不太好,假期还是要好好享受快乐,爹,新...
3 新年的第一天感冒又发烧的也太衰了但是我要想着明天一定会好的?
4 问:我们意念里有坏的想法了,天神就会给记下来,那如果有好的想法也会被记下来吗?答:那当然了。...
9 新年第一天,为自己鼓掌??????发烧了也要来看线下演出!因为热爱,所以才会克服困难线上演出...
13 哎,新年第一天发烧感冒,也是够够的,头都没开好,希望新的一年顺顺利利的???????...
99987 近日,斯坦福大学医学院神经外科专家与香港大学中医药学院专家联合发表论文,证明甘草酸可以与AC...
99988 海南海药已完成瑞德西韦制剂第一批生产海南海药(000566)2月14日晚间公告,公司积极响应...
99989 问卫光生物(002880):请问,在东方财富股吧的贵公司的论坛看到,有关深圳卫健委治疗新型冠...
99992 儿科医生鱼小南#育儿专家说#【体温扫描仪在检测新型冠状病毒感染者方面是有效的吗?】是的,体...
99998 【新冠疫情最受关注的十一篇英文核心期刊论文全解析】本文整理了关于新型冠状病毒最受关注的十一篇...
Name: 微博中文内容, Length: 25392, dtype: object
train_label.iloc[2:5, 3:5] # 有开区间
微博中文内容 | 微博图片 | |
---|---|---|
2 | 邱晨这就是我爹,爹,发烧快好,毕竟美好的假期拿来养病不太好,假期还是要好好享受快乐,爹,新... | ['... |
3 | 新年的第一天感冒又发烧的也太衰了但是我要想着明天一定会好的? | ['... |
4 | 问:我们意念里有坏的想法了,天神就会给记下来,那如果有好的想法也会被记下来吗?答:那当然了。... | [] |
修改选定部分的内容
train_label.iloc[2:5,3]="hello"
train_label.head(5)
微博id | 微博发布时间 | 发布人账号 | 微博中文内容 | 微博图片 | 微博视频 | 情感倾向 | |
---|---|---|---|---|---|---|---|
0 | 4456072029125500 | 01月01日 23:50 | 存曦1988 | 写在年末冬初孩子流感的第五天,我们仍然没有忘记热情拥抱这2020年的第一天。带着一丝迷信,早... | ['... | [] | 0 |
1 | 4456074167480980 | 01月01日 23:58 | LunaKrys | 开年大模型…累到以为自己发烧了腰疼膝盖疼腿疼胳膊疼脖子疼#Luna的Krystallife#? | [] | [] | -1 |
2 | 4456054253264520 | 01月01日 22:39 | 小王爷学辩论o_O | hello | ['... | [] | 1 |
3 | 4456061509126470 | 01月01日 23:08 | 芩鎟 | hello | ['... | [] | 1 |
4 | 4455979322528190 | 01月01日 17:42 | changlwj | hello | [] | [] | 1 |
关于子集的小结:
1、列选:df [ [‘column1, column2’] ]
2、索引:df.iloc( [1:5, 3:6] ) 1-5行,3-6列 右开区间
3、筛选:条件表达式、 isin()、notna()
ps:拼接方法:pd.concat([c1, c2, c3],axis=0)
ps: 直接去空:df.dropna()
更多推荐
pandas入门使用
发布评论