DataFrame

1:获取dataFrame的行数和列数

  行数:dataframe.shape[0]或len(DataFrame.index)
  列数:dataframe.shape[1]或len(DataFrame.columns)

2:创建DataFrame的几种方式:
self:DataFrame, data=None, index=None, columns=None, dtype=None, copy=False

1.通过NumPy的接口来创建一个4x4的矩阵,以此来创建一个DataFrame

df = pd.DataFrame(np.arange(16).reshape(4, 4))  # 默认的索引和列名都是[0, N-1]的形式

# 在创建DataFrame的时候指定列名和索引
df = pd.DataFrame(np.arange(16).reshape(4, 4),
                  columns=["column1", "column2", "column3", "column4"],
                  index=["a", "b", "c", "d"])

输出结果分别如下:

  

 

2.直接指定列数据来创建DataFrame
df = pd.DataFrame({"note": ["C", "D", "E", "F", "G", "A", "B"], "weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]})

输出结果如下:


3.以Series数组来创建DataFrame。注意!!!每个Series将成为一行,而不是一列!!!
noteSeries = pd.Series(["C", "D", "E", "F", "G", "A", "B"], index=[1, 2, 3, 4, 5, 6, 7])
weekdaySeries = pd.Series(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], index=[1, 2, 3, 4, 5, 6, 7])
df = pd.DataFrame([noteSeries, weekdaySeries])

输出结果如下:

 

3:DataFrame提供了下面两个操作符来访问其中的数据:

  • loc:  通过行和列的索引来访问数据
  • iloc:通过行和列的下标来访问数据

 补充:使用head查看前几行数据(默认是前5行),使用tail查看后几行数据(默认是后5行)

df = pd.DataFrame({"note": ["C", "D", "E", "F", "G", "A", "B"],
                   "weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]},
                    index=["a", "b", "c", "d", "e", "f", "g"])

# df.index = ["a", "b", "c", "d", "e", "f", "g"] 也可以通过此方式设置index

print(df, '
')
print(df.loc[['a', 'b'], "note"], '
')  # 访问了行索引为a和b,列索引为“note”的元素
print(df.iloc[[0, 1], 0])  # 访问了行下标为0和1,列下标为0的元素

 输出结果如下:

4:dataframe astype 字段类型转换

# -*- coding: UTF-8 -*-
import pandas as pd
df = pd.DataFrame([{'col1': 'a', 'col2': '1'}, {'col1': 'b', 'col2': '2'}])
print(df)
print(df.dtypes)
print('-----------')

df['col2'] = df['col2'].astype('int')
print(df.dtypes)
print('-----------')

df['col2'] = df['col2'].astype('float64')
print(df.dtypes)

输出结果如下:

5:dataFrame转化为矩阵

# -*- encoding:utf-8 -*-

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4), columns=list('abcd'))
print(df)
data = df.values
print(data, type(data), '
')
data = df.as_matrix(columns=['a', 'b'])  # 若columns=None或者省略columns参数,则默认把dataframe的所有列转化为矩阵
print(data, type(data))

 6:dataframe 按列或者按行合并

concat 与其说是连接,更准确的说是拼接。即把两个表直接合在一起。于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis 。

函数的具体参数是:

concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False)

objs 是需要拼接的对象集合,一般为列表或者字典

axis=0 是行拼接,拼接之后行数增加,列数也根据join来定,join='outer'时,列数是两表并集。同理join='inner',列数是两表交集。

在默认情况下,axis=0为纵向拼接,此时有

concat([df1,df2]) 等价于 df1.append(df2)

在axis=1 时为横向拼接 ,此时有

concat([df1,df2],axis=1) 等价于 merge(df1,df2,left_index=True,right_index=True,how='outer')

 例如:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.arange(16).reshape(4, 4))
print(df1)
df2 = pd.DataFrame(np.arange(12).reshape(4, 3))
print(df2)

data = pd.concat([df1, df2], axis=1)
print(data)

输出结果如下:

7:DataFrame切片操作

DataFrame数据框允许我们使用iloc方法来像操作array(数组)一样对DataFrame进行切片操作,其形式上,跟对数组进行切片是一样的。

1、创建一个6行4列的DataFrame数据框

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(6, 4), columns=list("ABCD"))
print(df)

2、使用iloc方法,提取数据:

df.iloc[3]  # 提取第四行数据

df.iloc[[1, 2, 4], [0, 2]]  # 提取第2、3、5,第1、3列的数据

df.iloc[1:3, :]  # 保证所有列都在,可以使用一个冒号来表示所有列(行也适用)

iat是专门提取某个数的方法,它的效率高更高,因此建议在提取单个数的时候用iat

df.iat[1, 1]

原文地址:https://www.cnblogs.com/fuqia/p/9043888.html