DAY #24
1.主题
Data analysis in Python with pandas全30集
https://www.bilibili.com/video/av6785636/?p=3
2.摘要
读取本地csv文件or网络csv文件:
orders = pd.read_table('/Users/gkingliu/Downloads/pandas-videos-master/data/chipotle.tsv')
movies = pd.read_csv('http://bit.ly/imdbratings')
为缺少分隔符与头部的csv添加sep与标题栏:
user_cols = ['user_id','age','gender','occupation','zip_code']
users = pd.read_table('http://bit.ly/movieusers',sep = '|',header = None, names = user_cols)
读取csv的前五行:
users.head()
调用其中一列数据:——>方括号或点法
ufo['City’]或ufo.City
创建新一列并添加到表格中:——>要用方括号,不能用点法
ufo['location'] = ufo.City + ', ' + ufo.State
修改列名称的几种方法:
ufo.rename(columns = {'Colors Reported': 'Colors_Reported','Shape Reported': 'Shape_Reported'}, inplace = True) ——>以字典方式一次修改多个标题
ufo_cols = ['city', 'colors reported', 'shape reported', 'state', 'time', 'location']
ufo.columns = ufo_cols ——> 首先做出一个重命名列表,然后赋值给列标题
ufo = pd.read_csv('http://bit.ly/uforeports',names = ufo_cols,header = 0) ——> 也可以在读取csv的时候就更改列名称
将列名称中的空格替换 _ 下划线:
ufo.columns = ufo.columns.str.replace(' ', '_')
删除一列:
ufo.drop('colors_reported', axis = 1 , inplace = True) ——> anxis表明方向,0为rows,1为columns, inplace为真表明立即执行
ufo.drop(['state', 'city'], axis = 1, inplace = True) ——> 一次删除多个列,就用list,删除单个列,就用str
删除一行:
ufo.drop([4,6], axis = 0,inplace = True) ——>anxis表明方向,0为rows, 一次删除多行,就用list括起来行号
排序:
movies.title.sort_values() ——>挑出某一列排序,sort_values() 默认升序
movies.title.sort_values(ascending = False) ——>改为降序
movies.sort_values('title') ——>对整个表格扩展排序,以title列为基准升序
按列值条件过滤:
一个过滤条件:
is_longer = movies.duration >= 200 ——> 返回bool型Series
movies[is_longer] ——> 传递给movies列表做过滤条件
movies.loc[movies.duration >= 200, 'genre'] ——> 只输出genre,用.loc比较好,表明按照列名称选择
多个过滤条件:
movies[(movies.duration >= 200) & (movies.genre == 'Crime') ] ——> 条件句之间用&联结,每个条件句用()括起来
movies.genre.isin(['Crime','Drame','Adventure']) ——> 多选一,用isin,填入一个备选项list
读取文件时只选取一部分列:
orders.columns ——> 首先查出表头的标题栏
orders = pd.read_table('/Users/gkingliu/Downloads/pandas-videos-master/data/chipotle.tsv', usecols = ['quantity','item_name']) ——> 用 usecols限定要读取的列的标题
orders = pd.read_table('/Users/gkingliu/Downloads/pandas-videos-master/data/chipotle.tsv', usecols = [0,2]) ——>也可以用index限定要读取的列
orders = pd.read_table('/Users/gkingliu/Downloads/pandas-videos-master/data/chipotle.tsv',nrows = 4) ——> 用nrows限定打印几数
只选取特定数据类型的列:
drinks.select_dtypes(include=[np.number])——> 利用numpy的select_dtypes方法
3.心得感悟
能看国外英语视频学习,就一定要看英文视频,的确高手开口,弯路少走!!!
DateFrame == 行×列
Series == 列
当你遇到这种错误:
ConnectionResetError: [Errno 54] Connection reset by peer
说明你从网络读取数据时,被国内的防火墙给搞了一下,不要怕,多试几次!
在iPython里,要了解某个函数的详细底细,就定位光标在括号内,按住shift,点击tab键,每点击一次,弹出的说明窗口就变大!!
4.时间统计
昨日阅读5小时,累计520小时