一、DataFrame示意图
注意:Pandas使用NaN来表示缺失值
二、基本操作
1.从1开始,因为0用于存储Index和Column
2.head和tail用于显示DataFrame的前后N行,他们只接受一个参数,就是N,即几行,缺省5行
3.访问DataFrame的Index、Column和数据
movie = pd.read_csv(‘data/movie.csv’)
index = movie.index
输出值:index.value
columns = movie.columns
data = movie.values
4.获取数据类型
movie.dtypes:获取所有列的数据类型
moves.get_dtype_counts():获取各种数据类型的数量
5.选择一列作为Series
movie['director_name']或movie.director_name
6. 行、列名操作
(1) 将某列指定为索引
方法一:指定某列
movie = pd.read_csv('data/movie.csv') movie2 = movie.set_index('movie_title')
方法二:读入文件是制定
movie = pd.read_csv('data/movie.csv', index_col='movie_title')
(2)修改行、列名
- 使用rename方法:DataFrame接受"旧列名:新列名"的map
idx_rename = {'Avatar':'Ratava', 'Spectre': 'Ertceps'}
col_rename = {'director_name':'Director Name', 'num_critic_for_reviews': 'Critical Reviews'}
movie_renamed = movie.rename(index=idx_rename, columns=col_rename)
- 转化为数组
movie = pd.read_csv('data/movie.csv', index_col='movie_title')
index = movie.index
columns = movie.columns
index_list = index.tolist()
column_list = columns.tolist()
index_list[0] = 'Ratava'
index_list[2] = 'Ertceps'
column_list[1] = 'Director Name'
column_list[2] = 'Critical Reviews'
movie.index = index_list
movie.columns = column_list
7.创建和插入列
(1)新建列
- 使用统一值:
movie = pd.read_csv('data/movie.csv')
movie['has_seen'] = 0
- 使用计算方法生成一列
movie['actor_director_facebook_likes'] =(movie['actor_1_facebook_likes'] +movie['actor_2_facebook_likes'] +movie['actor_3_facebook_likes'] +movie['director_facebook_likes'])
(2)插入一列
profit_index = movie.columns.get_loc('gross') + 1
movie.insert(loc=profit_index, column='profit', value=movie['gross'] - movie['budget'])
8.选择列
(1)选择多行
movie_actor_director = movie[['actor_1_name', 'actor_2_name', 'actor_3_name', 'director_name']]
cols = ['actor_1_name', 'actor_2_name', 'actor_3_name', 'director_name']
movie_actor_director = movie[cols]
(2)使用方法选择行
- 根据类型选择
movie.select_dtypes(include=['int']).head()
- 使用filter方法
movie.filter(like='facebook').head()
- 使用正则表达式
movie.filter(regex='d').head()
9.使用列名排序
movie = pd.read_csv('data/movie.csv')
movie.head()
disc_core = ['movie_title', 'title_year','content_rating', 'genres']
disc_people = ['director_name', 'actor_1_name','actor_2_name', 'actor_3_name']
disc_other = ['color', 'country', 'language','plot_keywords', 'movie_imdb_link']
new_col_order = disc_core + disc_people +disc_other + cont_fb + cont_finance + cont_num_reviews +cont_other
movie2 = movie[new_col_order]
//这个实现的方法,其实就是利用了我们取DataFrame子集的方法,即[]。
二、在整个DataFrame上操作
- 获取简单的描述:shap:行列;size多少个单元;ndim维数;len:多少行
- count:各列的值的个数
- min、max、mean、median、std,各列的对应描述
- describe:各列的5类描述。我们也可以用percentiles来获取指定分位数的数量如:movie.describe(percentiles=[.01, .3, .99])
三、其他
- 方法链
- 在DataFrame上使用运算符
- 比较缺失值
- 调换DataFrame操作的方向
我们通常的运算都是以index为轴,我们可以通过使用axis='column'来以列为轴,如:
college_ugds_.count(axis='columns').head()