更加详细的内容可以查看:https://blog.csdn.net/hhtnan/article/details/80080240 (基本函数整理)
https://blog.csdn.net/LY_ysys629/article/details/54428838
https://www.cnblogs.com/timotong/p/9678490.html
一. DataFrame的创建
创建一个空的dataframe
| 1 | df=pd.DataFrame(columns={"a":"","b":"","c":""},index=[0]) |
out:
用list的数据创建dataframe:
| 1 2 3 | a = [['2', '1.2', '4.2'], ['0', '10', '0.3'], ['1', '5', '0']] df = pd.DataFrame(a, columns=['one', 'two', 'three']) print df |
out:
| 1 2 3 4 | one two three 0 2 1.2 4.2 1 0 10 0.3 2 1 5 0 |
用numpy的矩阵创建dataframe
| 1 2 | array = np.random.rand(5,3) df = pd.DataFrame(array,columns=['first','second','third']) |
用dict的数据创建DataFrame
| 1 2 | data = { 'row1' : [1,2,3,4], 'row2' : ['a' , 'b' , 'c' , 'd'] } df = pd.DataFrame(data) |
| 1 2 | dict = { 'row1' : [1,2,3,4], 'row2' : ['a' , 'b' , 'c' , 'd'] } df = pd.DataFrame.from_dict(dict,orient='index').T |
读取csv或者excel文件为DataFrame格式
| 1 | df=pd.read_csv('D:/Program Files/example.csv') |
excel一个表格中可能有多个sheet,sheetname可以进行选取
| 1 | df = df.read_excel('D:/Program Files/example.xls',sheetname=0) |
二. DataFrame的一些描述和类型
describe会显示dataframe的一些基本统计数据,数量、均值、中位数、标准差等
head会显示dataframe的前几行,后几行:
| 1 2 | print df.describe() print df.head()<br>print df.tail(10) |
单独计算某列的统计值
| 1 2 3 4 5 | df['one'].sum() df['one'].mean() df['one'].count() df['one'].max() df['one'].min() |
查看dataframe的数据类型:
查看dataframe的数据数目:
查看dataframe的形状:
返回列数:
查看横纵坐标的标签名:
三. DataFrame的切片
iloc索引或切片(iloc中只能取整数值):
| 1 2 3 | print df.iloc[1,:] #第1行,所有列 print df.iloc[:,[0,2]] #第0行,第0列和第2列 print df['one'].iloc[2] #列名索引+行号 |
loc索引或切片(loc中可以取str):
| 1 | print data.loc[0:1, ['one', three']] # |
筛选出dataframe中有某一个或某几个字符串的列:
| 1 2 | list=['key1','key2'] df = df[df['one'].isin(list)] |
筛选出dataframe中不含某一个或某几个字符串的列,相当于反选
| 1 | df = df[~df['one'].isin(list)] |
四. 缺失值的处理
缺失值可以删除也可以用均值或者0等数填充:
| 1 2 | df.fillna(df1.mean()) df.fillna(0) |
删除缺失值时可以指定列:
| 1 | df = df.dropna(subset=['one','two']) |
五. 去重、删除行或列
去重需要在subset指定哪一列的值进行筛选,如果不选择的话默认整行的值全部一样才去掉
first表示保留第一个出现的值所在行,last表示保留最后一个出现的重复值所在的行,false表示重复的行全部删除
| 1 | df=df.drop_duplicates(subset='one',keep='first') |
去除有NaN值的行或列(axis=0去除行,=1去除列):
| 1 2 | df = df.dropna(axis=0) df = df.dropna(axis=1) |
去除某一列:
| 1 | df = df.drop(['one'],axis=1) |
去除含有某一个数的行:
| 1 2 | row_list = df[df.one == 2].index.tolist() # 获得含有该值的行的行号 df = df.drop(row_list) |
六. DataFrame的修改
修改数据类型
| 1 | df['one']=pd.DataFrame(df['one'],dtype=np.float) |
修改列名(需要写上所有列名,包括需要修改的和不需要修改的):
| 1 | df.columns = ['first','second','all'] |
修改列名(只需写上需要修改的列)
| 1 | df.rename(columns = {'one':'first','two':'second'},inplace = True) #inplace=True表示修改df,若为False表示只返回一个修改后的数据 |
重排序(by可以取多个列名,默认升序):
| 1 | df = df.sort_values(by=['one'],ascending = True) |
| 1 | df = df.sort_index(axis = 0,ascending = True,by = 'one') |
| 1 | df = df.sort(columns = ['one'],axis = 0,ascending = True) |
修改数据
用已有的列进行运算创建新的列
| 1 | df['new_colume'] = df['one'] + df['two'] |
七. dataframe更改索引
当删除掉不需要的行时,行索引会变的不连续,这时候可以重新设计新的索引
| 1 2 | df['index']=range(len(df['one'])) df.set_index('index') |
设置时间序列为索引
| 1 2 3 | dd = pd.date_range(start='4/1/2018',periods=5) #dd = pd.date_range('4/1/2018','4/5/2018') df = df.set_index(dd) |
八. 添加新的行,将两个dataframe连接到一起
axis表示连接的方向,axis=0表示两个dataframe的行数会增加,如果列名相同则直接共用列,如果列名不同会生成新的列;axis=1,表示会加上新的列
| 1 | df=pd.concat([df,df],axis=0) # 连接后行数是以前的2倍,列数不变 |
在dataframe添加新的行
| 1 | df = df.append(df.loc[2,:],,ignore_index=True) |
如果两个dataframe的列名是一样的,也可以用merge:
九. DataFrame的输出
输出为excel或者csv格式,csv文件里的数据被读取时数据类型默认为object,excel则会保留原有的数据类型
| 1 2 | df.to_excel('path/filename.xls') df.to_csv('path/filename.csv') |
输出为numpy的矩阵格式
| 1 | matrix = df.ax_matrix() |
输出为dict格式
| 1 | dict = df.to_dict(orient="dict") |
最后
以上就是明亮灯泡最近收集整理的关于python:pandas中dataframe的基本用法汇总 的全部内容,更多相关python:pandas中dataframe内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复