pandas中的两大数据组织方式:DataFrame、Series
numpy中的ndarry
list → \to →ndarry → \to →Series → \to →DataFrame
Parameters
datandarray (structured or homogeneous), Iterable, dict, or DataFrame
数据数组(结构化的或同构的)、可迭代的、dict或DataFrame
Dict can contain Series, arrays, constants, or list-like objects.
Dict可以包含系列、数组、常量或类列表对象。
Changed in version 0.23.0: If data is a dict, column order follows insertion-order for Python 3.6 and later.
如果数据是dict,那么在Python 3.6及更高版本中,列顺序同插入顺序一致。
Changed in version 0.25.0: If data is a list of dicts, column order follows insertion-order for Python 3.6 and later.
如果数据是一个dict列表,那么在Python 3.6及以后版本中,列顺序同插入顺序一致。
index Index or array-like
Index to use for resulting frame. Will default to RangeIndex if no indexing information part of input data and no index provided.
索引用于生成的帧。如果输入数据中没有索引信息,并且没有提供索引,则默认为RangeIndex。
columns Index or array-like
Column labels to use for resulting frame. Will default to RangeIndex (0, 1, 2, …, n) if no column labels are provided.
用于生成帧的列标签。如果没有提供列标签,将默认为RangeIndex(0,1,2,…,n)。
dtypedtype, default None
Data type to force. Only a single dtype is allowed. If None, infer.
要强制的数据类型。只允许使用单个dtype。如果没有,则自动推断。
copybool, default False
Copy data from inputs. Only affects DataFrame / 2d ndarray input.
从输入复制数据。只影响DataFrame / 2d ndarray输入。
测试数据1:
df=pd.read_excel('./test_data.xlsx')
print(df.head())
D1 D5=null D5=2 D5=8 D5=9
0 A 62231 0 0 0
1 B 24644 0 0 0
2 C 142 0 0 0
3 D 3431 0 0 0
4 E 1333 0 0 0
ABCDE各列中,A列元素的类型为字符型,BCDE各列的元素类型为int类型
df = pd.DataFrame(result,
columns=['A', 'B', 'C', 'D', 'E'],
dtype='float')
设置dtype='float'
后BCDE各列数据类型变为float类型
对dataframe应用某个函数
df['operation']=df.apply(lambda x:x['D']/(x['B']+x['C']+x['D']),axis=1)
参数axis=1,逐行对DataFrame对象应用lambda x:x['D']/(x['B']+x['C']+x['D']
这个函数
计算D列除以B、C、D列的和
先使用iloc()
函数取得要进行计算的区域,这个区域也是DataFrame类型,在这个DataFrame对象上使用apply()函数,将计算公式应用到这个Dataframe中
df2=df.iloc[:,1:]
df.loc['Row_sum'] = df2.apply(lambda x: x.sum())
将计算结果作为新的一行插入Dataframe的末尾
D1 D5=null D5=2 D5=8 D5=9 sum(D5) IsTransmission=1
0 A 62231.0 0.0 0.0 0.0 62231.0 0.0
1 B 24644.0 0.0 0.0 0.0 24644.0 0.0
2 C 142.0 0.0 0.0 0.0 142.0 0.0
3 D 3431.0 0.0 0.0 0.0 3431.0 0.0
4 E 1333.0 0.0 0.0 0.0 1333.0 0.0
............
14 O 26462.0 0.0 0.0 0.0 26462.0 0.0
15 P 75468.0 0.0 0.0 0.0 75468.0 0.0
Row_sum NaN 639300.0 17701.0 232480.0 3049.0 892530.0 0.0
DataFrame.itertuples(self, index=True, name='Pandas')[source]
Iterate over DataFrame rows as namedtuples.
以命名元组的形式迭代DataFrame中的每一行
Parameters
index:bool, default True
If True, return the index as the first element of the tuple.
如果为True,返回元组中第一个元素的索引值
name :str or None, default “Pandas”
The name of the returned namedtuples or None to return regular tuples.
返回的namedtuples的名称,如果为None则默认为Pandas
Returns
iterator
An object to iterate over namedtuples for each row in the DataFrame with the first field possibly being the index and following fields being the column values.
一个对象,用于遍历DataFrame中的每一行的namedtuples,第一个字段可能是索引,后面的字段可能是列值。
根据索引提取DataFrame中的某一行/列,或某个元素
data = df.loc[df['A'] == key]
取A列中值为key的列
根据行数和列数提取DataFrame中的某一行、某一列
data=df.loc[x1:x2,y1:y2]
提取x1行到x2行,y1列到y2列
DataFrame.insert(self, loc, column, value, allow_duplicates=False) → None[source]
Insert column into DataFrame at specified location.
插入一列到DataFrame的指定位置
Raises a ValueError if column is already contained in the DataFrame, unless allow_duplicates is set to True.
如果该列已经在DataFrame中则触发ValueError,如果设置allow_duplicate=True则不会触发此异常
Parameters:
loc :int
Insertion index. Must verify 0 <= loc <= len(columns).
要插入位置的索引,必须在$[0,len(columns)]$(闭区间)之间
column:str, number, or hashable object(可哈希的对象)
Label of the inserted column.
插入列的标签(列名)
value:int, Series, or array-like
allow_duplicates:bool, optional
使用
将一个Series对象插入到DataFrame的第6列中
series=pd.Series(list_1,dtype=int)
print(series.head())
0 0
1 0
2 0
3 0
4 0
df.insert(loc=5,column='IsTransmission=1',value=series)
D1 D5=null D5=2 D5=8 D5=9 IsTransmission=1
0 A 62231 0 0 0 0
1 B 24644 0 0 0 0
2 C 142 0 0 0 0
3 D 3431 0 0 0 0
4 E 1333 0 0 0 0
df['operation']=round(df['operation'],4)
对DataFrame中的operation列的元素进行取小数点后4位操作
原因:索引存在重复的项
情景:一个DataFrame、一个Series,我想将Series插入到DataFrame中,触发了这个错误
方法:使用XXX.index.duplicated()
方法找到重复的项,将索引修改一下,或者替换掉,或者在构造Series时使用默认索引
print(df.index.duplicated())
print(series.index.duplicated())
[False False False False False False False False False False False False
False False False False]
[False False False False False False False False False False False False
False False False False]
pandas.DataFrame
传送门
在Pandas中更改列的数据类型【方法总结】
传送门
pandas.read_csv参数详解
传送门
DataFrame由已知列数据计算生成新列的方法
传送门
andas对DataFrame单列/多列进行运算(map, apply, transform, agg)
传送门
在dataframe添加1行(首行,或者尾部),且不覆盖
url
DataFrame对行列求和并添加新行和列
url
如何将DataFrame中除第一列之外的所有列合并为一列并删除空行?
url
pandas报错:cannot reindex from a duplicate axis
url
DataFrame数据拼接合并的几种方式
url
将一个series插入到一个dataframe任一一列中
url
谷歌浏览器(chrome)切换标签页的快捷键
url
从左往右ctrl+tab
从右往左ctrl+shift+tab
关闭标签页ctrl+w