Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3.x中按年份划分的最常见名称_Python_Python 3.x - Fatal编程技术网

Python3.x中按年份划分的最常见名称

Python3.x中按年份划分的最常见名称,python,python-3.x,Python,Python 3.x,我有一个名为(JMÉNO)、年份的csv excel文件,我需要编写一个函数names_chart(year,filename,n),它将写入一年中最常见的名称(n)的计数(根据文件中的数据)。我已经写了一个代码,可以写最常见的名字,但是没有年份参数。 有人能帮我解决这个问题吗 csv文件的一部分: 代码: 重新导入 def过程_单词(单词,单词): 如果len(word)

我有一个名为(JMÉNO)、年份的csv excel文件,我需要编写一个函数
names_chart(year,filename,n)
,它将写入一年中最常见的名称(n)的计数(根据文件中的数据)。我已经写了一个代码,可以写最常见的名字,但是没有年份参数。 有人能帮我解决这个问题吗

csv文件的一部分:

代码:

重新导入
def过程_单词(单词,单词):
如果len(word)<4:
返回
w=字。下()
如果w大写:
字[w]+=1
其他:
字[w]=1
def get_单词(文本):
单词={}
对于re.findall中的w(“\w+”,文本):
过程字(w,字)
回话
def读入(文件名):
将open(filename,“r”,encoding=“utf-8”)作为f:
返回f.read()
def打印顶部(字数、计数):
排序的名称=排序的(单词,关键字=words.get,反向=True)
对于排序名称中的w[:计数]:
打印(w,字[w])
def名称图表(年份、文件名、n):
text=读入(文件名)
单词=获取单词(文本)
打印顶部(文字,n)
姓名图表(1987年,“du06_jmena.csv”,第10页)
是一个重要的数据分析库。使用DataFrames,我们可以将分析简化为单个函数。由于未指定输出类型,我们将返回名称、值对的列表:

import pandas as pd

def names_chart (year, filename, n, get_df=False):
    """Return the n most common names of a given year as a list of tuples."""
    # Input processing
    if isinstance(year, int):
        year = str(year)
    names = "JMÉNO"

    # pandas: find indices in `df` that are most common names/year (condition)
    # Return only the names and given year columns
    df = pd.read_csv(filename, sep=",", encoding='latin1')
    condition = df[year].nlargest(n).index
    top_names_per_year = df.loc[condition, [names, year]]

    # Output processing
    if get_df:
        return top_names_per_year

    return top_names_per_year.values.tolist()
您现在可以通过
列表
访问数据:

names_chart (2011, "./@data/gistfile1.txt", 3)

# Output (List, default):
[['AARON', 4], ['AARIAN KAMER', 1], ['A-MI', 0]]
您可以选择使用
get\u df=True
返回数据帧对象的
top\u names\u per\u year
。数据帧还有更多

结果子集显示指数、名称列和
列中相应的最大频率。

是数据分析的重要库。使用DataFrames,我们可以将分析简化为单个函数。由于未指定输出类型,我们将返回名称、值对的列表:

import pandas as pd

def names_chart (year, filename, n, get_df=False):
    """Return the n most common names of a given year as a list of tuples."""
    # Input processing
    if isinstance(year, int):
        year = str(year)
    names = "JMÉNO"

    # pandas: find indices in `df` that are most common names/year (condition)
    # Return only the names and given year columns
    df = pd.read_csv(filename, sep=",", encoding='latin1')
    condition = df[year].nlargest(n).index
    top_names_per_year = df.loc[condition, [names, year]]

    # Output processing
    if get_df:
        return top_names_per_year

    return top_names_per_year.values.tolist()
您现在可以通过
列表
访问数据:

names_chart (2011, "./@data/gistfile1.txt", 3)

# Output (List, default):
[['AARON', 4], ['AARIAN KAMER', 1], ['A-MI', 0]]
您可以选择使用
get\u df=True
返回数据帧对象的
top\u names\u per\u year
。数据帧还有更多


结果子集显示指数、一列名称和
列中相应的最大频率。

我也会使用熊猫,但方式不同

我会这样写我的函数:

def common_names(year, filename, N):
    yearcol = str(year)
    namecol = 'JMÉNO'
    df = (
        pandas.read_csv(filename)
            .sort_values(by=[yearcol], ascending=False)
            .head(N)
    )[[namecol, yearcol]]
    return df

我也会用熊猫来做这个,但方式不同

我会这样写我的函数:

def common_names(year, filename, N):
    yearcol = str(year)
    namecol = 'JMÉNO'
    df = (
        pandas.read_csv(filename)
            .sort_values(by=[yearcol], ascending=False)
            .head(N)
    )[[namecol, yearcol]]
    return df

为什么不订一本词典,每年一本呢?主循环需要决定(基于year参数)将给定名称记录在哪个字典中(如果该年份尚未出现,则生成一个新字典)。由于这似乎是家庭作业,我将为您留下详细信息。您能在这里发布实际CSV的一部分吗?也许只有几行?这也可以简单地用,它可以将文件读入数据帧并执行各种操作,例如查找最频繁的值
df['item'].value_counts().idxmax()
。提供数据集的要点,可能会有人帮助您。谢谢您的回答。给约翰·科尔曼:我不确定我应该在哪个职能部门做这件事。你能给我一个提示吗?要不是机器人:只有一列名为逗号年逗号年。。。。与所附的截图完全相同。对pylang:我相信,没有任何其他库(?)有更简单的方法来实现它。你在github上吗?您可以发布数据集的一部分。给出一些数据,就可以证明熊猫是多么容易相处。为什么不编一本字典,每年编一本呢?主循环需要决定(基于year参数)将给定名称记录在哪个字典中(如果该年份尚未出现,则生成一个新字典)。由于这似乎是家庭作业,我将为您留下详细信息。您能在这里发布实际CSV的一部分吗?也许只有几行?这也可以简单地用,它可以将文件读入数据帧并执行各种操作,例如查找最频繁的值
df['item'].value_counts().idxmax()
。提供数据集的要点,可能会有人帮助您。谢谢您的回答。给约翰·科尔曼:我不确定我应该在哪个职能部门做这件事。你能给我一个提示吗?要不是机器人:只有一列名为逗号年逗号年。。。。与所附的截图完全相同。对pylang:我相信,没有任何其他库(?)有更简单的方法来实现它。你在github上吗?您可以发布数据集的一部分。给出一些数据,就可以证明使用pandas是多么容易。我认为您可以使用
df2.values.tolist()
简单地使用非dataframe返回语句。这将是一个列表列表,而不是元组列表。很好的建议。谢谢@Paul H。我想您可以简单地使用
df2.values.tolist()
返回非数据帧语句。这将是一个列表列表,而不是元组列表。很好的建议。谢谢@paulh。