如果您想了解PythonPandas在dataFrame中计算百分比并将其放入列表的问题和pandas如何求百分比的知识,那么本篇文章将是您的不二之选。我们将深入剖析PythonPandas在data
如果您想了解Python Pandas在dataFrame中计算百分比并将其放入列表的问题和pandas 如何求百分比的知识,那么本篇文章将是您的不二之选。我们将深入剖析Python Pandas在dataFrame中计算百分比并将其放入列表的问题的各个方面,并为您解答pandas 如何求百分比的疑在这篇文章中,我们将为您介绍Python Pandas在dataFrame中计算百分比并将其放入列表的问题的相关知识,同时也会详细的解释pandas 如何求百分比的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- Python Pandas在dataFrame中计算百分比并将其放入列表的问题(pandas 如何求百分比)
- PANDAS中类似SQL的窗口函数:Python Pandas Dataframe中的行编号
- pandas在DataFrame中获取给定索引的位置
- Python Pandas -- DataFrame
- Python pandas dataframe
Python Pandas在dataFrame中计算百分比并将其放入列表的问题(pandas 如何求百分比)
您可以尝试:
df.groupby('gender')['impressions'].apply(lambda x : (sum(x)/sum(df['impressions'])*100))
gender
female 57.0276
male 42.9724
和
df.groupby('gender')['impressions'].apply(lambda x : (sum(x)/sum(df['impressions'])*100)).to_list()
[57.02762682448004,42.972373175519957]
如果要使用所需的确切数据框,请将上面的内容另存为“ s”,然后执行以下操作:
s=df.groupby('gender')['impressions'].apply(lambda x : (sum(x)/sum(df['impressions'])*100))
pd.DataFrame(s).T
gender female male
impressions 57.027627 42.972373
,
您在这里:
df_agg = df.drop(['age'],axis=1).groupby('gender').sum()
print(df_agg['impressions']/df_agg['impressions'].sum()*100)
打印(根据您的数据可能有所不同):
F 71.428571
M 28.571429
Name: impressions,dtype: float64
,
history
,
您可以尝试以下一种方法:
(df.groupby('gender').sum()['impressions']/df['impressions'].sum()).to_frame(name = 'impressions').T
PANDAS中类似SQL的窗口函数:Python Pandas Dataframe中的行编号
我来自sql背景,并且经常使用以下数据处理步骤:
- 按一个或多个字段对数据表进行分区
- 对于每个分区,在其每一行中添加一个行号,以行的一个或多个其他字段对行进行排名,分析人员在其中指定升序或降序
例如:
df = pd.DataFrame({''key1'' : [''a'',''a'',''a'',''b'',''a''], ''data1'' : [1,2,2,3,3], ''data2'' : [1,10,2,3,30]})df data1 data2 key1 0 1 1 a 1 2 10 a 2 2 2 a 3 3 3 b 4 3 30 a
我正在寻找如何执行相当于此sql窗口函数的PANDAS:
RN = ROW_NUMBER() OVER (PARTITION BY Key1 ORDER BY Data1 ASC, Data2 DESC) data1 data2 key1 RN0 1 1 a 1 1 2 10 a 2 2 2 2 a 33 3 3 b 14 3 30 a 4
我尝试了以下在没有“分区”的情况下必须工作的方法:
def row_number(frame,orderby_columns, orderby_direction,name): frame.sort_index(by = orderby_columns, ascending = orderby_direction, inplace = True) frame[name] = list(xrange(len(frame.index)))
我试图将这个想法扩展到可以使用分区(熊猫中的组),但是以下操作不起作用:
df1 = df.groupby(''key1'').apply(lambda t: t.sort_index(by=[''data1'', ''data2''], ascending=[True, False], inplace = True)).reset_index()def nf(x): x[''rn''] = list(xrange(len(x.index)))df1[''rn1''] = df1.groupby(''key1'').apply(nf)
但是当我这样做时,我得到了很多NaN。
理想情况下,有一种简洁的方法可以复制sql的窗口函数功能(我已经弄清楚了基于窗口的聚合……这是熊猫的一个内衬)……有人可以和我分享最惯用的方法吗?在PANDAS中编号这样的行?
答案1
小编典典您可以通过groupby
与rank
方法一起使用两次来做到这一点:
In [11]: g = df.groupby(''key1'')
使用min方法参数为共享相同RN的相同数据的值赋值:
In [12]: g[''data1''].rank(method=''min'')Out[12]:0 11 22 23 14 4dtype: float64In [13]: df[''RN''] = g[''data1''].rank(method=''min'')
然后对这些结果进行分组,并添加关于data2的排名:
In [14]: g1 = df.groupby([''key1'', ''RN''])In [15]: g1[''data2''].rank(ascending=False) - 1Out[15]:0 01 02 13 04 0dtype: float64In [16]: df[''RN''] += g1[''data2''].rank(ascending=False) - 1In [17]: dfOut[17]: data1 data2 key1 RN0 1 1 a 11 2 10 a 22 2 2 a 33 3 3 b 14 3 30 a 4
感觉应该有一种本机的方法可以做到这一点(可能有!!)。
pandas在DataFrame中获取给定索引的位置
假设我有一个像这样的DataFrame:
df A B5 0 118 2 3125 4 5
5, 18, 125
索引在哪里
我想在某个索引之前(或之后)得到该行。例如,我有索引18
(例如,通过执行df[df.A==2].index
),并且我想在之前获得该行,但我不知道该行具有5
索引。
2个子问题:
- 如何获得索引的位置
18
?像df.loc[18].get_position()
这样的东西会回来,1
所以我可以在到达之前df.iloc[df.loc[18].get_position()-1]
- 有另一种解决办法,有点像选择
-C
,-A
或者-B
使用grep?
答案1
小编典典对于第一个问题:
base = df.index.get_indexer_for((df[df.A == 2].index))
或者
base = df.index.get_loc(18)
要获得周围的环境:
mask = pd.Index(base).union(pd.Index(base - 1)).union(pd.Index(base + 1))
我使用索引和联合来删除重复项。您可能需要保留它们,在这种情况下可以使用np.concatenate
注意第一行或最后一行的匹配:)
Python Pandas -- DataFrame
pandas.DataFrame
-
class
pandas.
DataFrame
(data=None, index=None, columns=None, dtype=None, copy=False)[source] -
Two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns). Arithmetic operations align on both row and column labels. Can be thought of as a dict-like container for Series objects. The primary pandas data structure
Parameters: data : numpy ndarray (structured or homogeneous), dict, or DataFrame
Dict can contain Series, arrays, constants, or list-like objects
index : Index or array-like
Index to use for resulting frame. Will default to np.arange(n) if no indexing information part of input data and no index provided
columns : Index or array-like
Column labels to use for resulting frame. Will default to np.arange(n) if no column labels are provided
dtype : dtype, default None
Data type to force. Only a single dtype is allowed. If None, infer
copy : boolean, default False
Copy data from inputs. Only affects DataFrame / 2d ndarray input
See also
-
DataFrame.from_records
- constructor from tuples, also record arrays
-
DataFrame.from_dict
- from dicts of Series, arrays, or dicts
-
DataFrame.from_items
- from sequence of (key, value) pairs
pandas.read_csv
,pandas.read_table
,pandas.read_clipboard
1. 先来个小菜
基于dictionary创建
from pandas import Series, DataFrame import pandas as pd import numpy as np d = {''col1'':[1,2],''col2'':[3,4]} df = pd.DataFrame(data=d) print(df) print(df.dtypes) # col1 col2 #0 1 3 #1 2 4 #col1 int64 #col2 int64 #dtype: object
基于Numy的ndarrary
df2 = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)),columns=[''a'', ''b'', ''c'', ''d'', ''e'']) print (df2) # a b c d e #0 0 2 4 7 0 #1 6 7 3 4 1 #2 5 3 3 8 7 #3 0 9 4 3 4 #4 7 4 7 0 0
-
Python pandas dataframe
dataframe 列类型
df['客户id'] = df['客户id'].apply(pd.to_numeric)
df = pd.DataFrame(a, dtype='float') #示例1
df = pd.DataFrame(data=d, dtype=np.int8) #示例2
df = pd.read_csv("somefile.csv", dtype = {'column_name' : str})
df[['col2','col3']] = df[['col2','col3']].apply(pd.to_numeric)
df[['two', 'three']] = df[['two', 'three']].astype(float)
df.dtypes
type(mydata[0][0])
维度查看:df.shape
数据表基本信息(维度、列名称、数据格式、所占空间等):df.info()
每一列数据的格式:df.dtypes
某一列格式:df['B'].dtype
文件操作
DataFrame 数据的保存和读取
- df.to_csv 写入到 csv 文件
- pd.read_csv 读取 csv 文件
- df.to_json 写入到 json 文件
- pd.read_json 读取 json 文件
- df.to_html 写入到 html 文件
- pd.read_html 读取 html 文件
- df.to_excel 写入到 excel 文件
- pd.read_excel 读取 excel 文件
pandas.DataFrame.to_csv
将 DataFrame 写入到 csv 文件
DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True,
index_label=None, mode='w', encoding=None, compression=None, quoting=None, quotechar='"',
line_terminator='\n', chunksize=None, tupleize_cols=None, date_format=None, doublequote=True,
escapechar=None, decimal='.')
参数:
path_or_buf : 文件路径,如果没有指定则将会直接返回字符串的 json
sep : 输出文件的字段分隔符,默认为 “,”
na_rep : 用于替换空数据的字符串,默认为''
float_format : 设置浮点数的格式(几位小数点)
columns : 要写的列
header : 是否保存列名,默认为 True ,保存
index : 是否保存索引,默认为 True ,保存
index_label : 索引的列标签名
条件筛选
单条件筛选
多条件筛选
索引筛选
切片操作
loc函数[行用序号,列用名称]
iloc函数[行用序号,列用序号]
使用方法同loc函数,但是不再输入列名,而是输入列的index: data.iloc[row_index,col_index]
ix函数
at函数
iat函数
df.set_index(
'month'
)
df.set_index([
'year'
,
'month'
])
DataFrame.columns = [newName]
df['Hour'] = pd.to_datetime(df['report_date'])
df.rename(index = str,column = new_names)
删除列:
#通过特征选取
data = data[['age']]
#通过del 关键字
del data['name']
#通过drop函数
data.drop(['name'],axis=1, inplace=True)
#通过pop
data.pop('name')
df = pd.read_csv(INPUTFILE, encoding = "utf-8")
df_bio = pd.read_csv(INPUTFILE, encoding = "utf-8", header=None) # header=None, header=0
显示前几行
df.head()
显示后几行
df.tail()
删除重复的数据
isDuplicated=df.duplicated() #判断重复数据记录
print(isDuplicated)
0 False
1 False
2 True
3 False
dtype: bool
#删除重复的数据
print(df.drop_duplicates()) #删除所有列值相同的记录,index为2的记录行被删除
col1 col2
0 a 3
1 b 2
3 c 2
print(df.drop_duplicates(['col1'])) #删除col1列值相同的记录,index为2的记录行被删除
col1 col2
0 a 3
1 b 2
3 c 2
print(df.drop_duplicates(['col2'])) #删除col2列值相同的记录,index为2和3的记录行被删除
col1 col2
0 a 3
1 b 2
print(df.drop_duplicates(['col1','col2'])) #删除指定列(col1和col2)值相同的记录,index为2的记录行被删除
col1 col2
0 a 3
1 b 2
3 c 2
df 某一列字母转大写小写
df['列名'] = df['列名'].str.upper()
df['列名'] = df['列名'].str.lower()
REF
https://www.cnblogs.com/aro7/p/9748202.html
https://www.cnblogs.com/hankleo/p/11462532.html
今天关于Python Pandas在dataFrame中计算百分比并将其放入列表的问题和pandas 如何求百分比的介绍到此结束,谢谢您的阅读,有关PANDAS中类似SQL的窗口函数:Python Pandas Dataframe中的行编号、pandas在DataFrame中获取给定索引的位置、Python Pandas -- DataFrame、Python pandas dataframe等更多相关知识的信息可以在本站进行查询。
本文标签: